我正在从在线源请求数据,然后我将其解码为json StdClass对象(使用php)。一旦我完成了这个,我有以下内容(见下文)。我试图通过echo $response->stuff->WHAT GOES HERE?->otherstuff
但是我不能对[2010-12]进行硬编码,因为它是一个约会对象,我有什么方法可以打电话,例如$response->stuff->nextsibling->stuff
我希望这对某些人有意义:D目前,我正在通过$key => $value
for循环对其进行混蛋,并提取键值并在$response->stuff->$key->stuff
调用中使用它。
stdClass Object
(
[commentary] =>
[stuff] => stdClass Object
(
**[2010-12]** => stdClass Object
(
[otherstuff] => stdClass Object
(
[otherstuffrate] => 1
[otherstufflevel] => 1
[otherstufftotal] => 1
)
)
)
)
答案 0 :(得分:3)
StdClass实例可以与一些Array Functions一起使用,其中包括
所以你可以做(codepad)
$obj = new StdClass;
$obj->{"2012-10"} = 'foo';
echo current($obj); // foo
echo key($obj); // 2012-10
在旁注中,对象属性不应该以数字开头,并且它们可能不包含破折号,因此不是使用StdClass对象,而是将TRUE
作为第二个参数传递给json_decode
。然后,返回的对象将转换为关联数组。
答案 1 :(得分:0)
日期键必须是字符串,否则PHP会中断;)。
echo $response->stuff['2010-12']->otherstuff
使用字符串检索它。
答案 2 :(得分:0)
再次编辑:添加了对象代码
json将其解码为关联数组,并使用通过array_keys
获取的密钥。看到它在这里工作:http://codepad.org/X8HCubIO
<?php
$str = '{
"commentary" : null,
"stuff" : {
"ANYDATE" : {
"otherstuff": {
"otherstuffrate" : 1,
"otherstufflevel" : 1,
"otherstufftotal" : 1
}
}
}
}';
$obj = json_decode($str,true);
$reqKey = array_keys($obj["stuff"]);
$req = $obj["stuff"][$reqKey[0]]["otherstuff"];
print_r($req);
print "====================as object ============\n";
$obj = json_decode($str);
$req = current($obj->stuff)->otherstuff;
print_r($req);
?>