2015-11-05 101 views
0

我知道类似的问题之前曾被问过。但是我要问的原因是因为我在这些问题中尝试了许多这里提供的解决方案,但似乎没有任何工作适合我。 :(比方说,我尝试了这些问题:1 2 3打印stdClass对象值

背景

我打电话到RESTAPI和JSON格式获取数据

$apiResult = connect_to_api($link); // function works fine 

echo '<pre>'; 
echo print_r(json_decode($apiResult)); 
echo '</pre>'; 

当我打印,得到如下结果:

stdClass Object 
(
    [id] => 91 
    [name_1] => city name 
    [name_2] => area name 
    [name_3] => municipality 
    [web] => www.example.com 
) 

问题范围

当我尝试访问的id只值它说,试图让非对象属性。例如我试过

echo $apiResult->id; 

foreach($apiResult as $result){ 
    echo $result->id; 
} 

什么都没有真正起作用。不知道我哪里错了。任何帮助或建议表示赞赏。提前致谢。

+0

只让它作为一个数组insted的对象'json_decode($ apiResult,真)' – Mihai

+1

@Mihai的为什么人们想要一个完美的对象转换成一个数组。 – RiggsFolly

+0

@RiggsFolly为什么不呢? – Mihai

回答

1

您是否尝试在调用对象属性之前解码json?

$apiResult = json_decode(connect_to_api($link)); 
echo $apiResult->id; 
+0

@Mihai,是的,我在调用对象属性之前做了解码。 foreach(json_decode($ apiResult)作为$ result){ echo $ result-> id; } 但没有工作。 – johnshumon

+0

结果不是一个数组,而是一个简单的对象..试试看,如果我的确看到了作品 –

+0

@Mihai,非常感谢,它的工作方式您建议! – johnshumon

1

在你的foreach中,你基本上是通过对象属性进行处理,并获取作为name => value对返回的属性。

因此,在你的这个说法: -

foreach($apiResult as $result){ 
    echo $result->id; 
} 

$result91city namearea name ....即每个属性,而不是一个对象在所有的值。

因此,举例来说,如果你编码像这样的foreach它会证明这一点

// foreach over the object 
foreach ($apiResult as $property => $Value) { 
    echo "Property Name = $property"; 
    echo " Property Value = $value <br>"; 
} 

但是,这是不太可能你想要做什么,我以为你只是想通过名称的属性来获取,所以使用

echo $apiResult->id; 
echo $apiResult->name_1; 

etc