这是我的Json的样本
{
"164616":{
"competitors":{
"950053":{
"Name":"Hookinn",
"Jockey":"L PILLAR(A)",
"DetailedPricing":{
"winTotePlus":false,
"placeTotePlus":false,
"placePrices":{
"2":0,
"12":0
},
"RisaSilkID":1551
}
}
}
}
}
这是我的代码。
$string = file_get_contents(@"D:/test.json");
$json_a=json_decode($string,true);
foreach ($json_a as $root_element => $childnode) {
foreach( $childnode as $cKey => $subChild) {
foreach( $subChild as $cKey2 => $subChild2) {
echo($subChild2['Name']);
echo("<br>");
foreach($subChild2['DetailedPricing'] as $compKey => $compVal) {
// echo($compVal['placeTotePlus']); echo("<br>");}
}
}
}
}
我可以使用subChild2 [&#39; Name&#39;]获取Name属性但是当我尝试访问在DetailedPricing数组中的placeTotePlus属性时,我得到未定义的索引错误。我做错了什么?我也想获得placePrices值。
由于
答案 0 :(得分:1)
你走了。
$string = json_decode($string, true);
foreach($string as $item => $comp) {
foreach($comp as $key =>$users) {
foreach($users as $derp=>$user) {
var_dump($user['DetailedPricing']['placeTotePlus']);
}
}
}
返回:
bool(false)
它不打印任何东西的原因是因为它是一个布尔值。你可以测试(,如评论中所述)这样的东西:
(!$users['DetailedPricing']['placeTotePlus']) ? 'Its false' : 'Its true';
在回复您的评论时,您会使用isset()
if(!isset($user['DetailedPricing']['PlaceTotPlus'])) {
print 'nothing';
}