PHP - 在没有"字符串"的情况下通过JSON数组循环

时间:2016-05-01 18:07:53

标签: php arrays json

所以我有疑问。我有一个JSON数组

这里是JSON:http://pastebin.com/raw/XEzAEdfg

我怎么能循环通过?这是我此刻尝试的内容:

$output = json_decode($result2);
foreach($output as $SuiFag){
    echo $SuiFag->aaData[6];
}
?>

2 个答案:

答案 0 :(得分:1)

我想你的数据json数据应该是一个名为“aaData”的数组类型的对象属性,所以只有[字符应该在那里,而{和}应该定义json对象的开始和结束(traling逗号不是允许的):

$result2='{
   "aaData": [
         "Knife",
         "/id/1676/",
         "★ Karambit | Stained (Field-Tested)<\/a>",
         "234.87",
         "224.85",
         "5907380460<\/a>",
         "0.2123493403<\/a>",
         "Inspect<\/a>"
      ]
}';

所以你可以使用直接对象属性访问(你需要foreach来扫描一个数组而不是一个对象的属性):

$output = json_decode($result2);
echo $output->aaData[6];

OR 如果你的json结构是这样的: 允许的):

$result2='{
    ...
   "aaData": [
        [
         "Knife",
         "/id/1676/",
         "★ Karambit | Stained (Field-Tested)<\/a>",
         "234.87",
         "224.85",
         "5907380460<\/a>",
         "0.2123493403<\/a>",
         "Inspect<\/a>"
        ],
        ...
    ]
}';

然后你的代码应该是:

$output = json_decode($result2);
foreach($output->aaData as $SuiFag){
    echo $SuiFag[6];
}

打印数组“aaData”的每个元素的每个第6个元素;

答案 1 :(得分:0)

您需要遍历aaData数组然后输出第6行。下面将输出每个aaData数组的第6行

$output = json_decode($result2);
foreach($output as $SuiFag) {
    for($i=0; $i<count($SuiFag);$i++) {
        echo $SuiFag[$i][6] . '<br>';
    }
}
?>

当然,如果要回显数组中的每个项目,可以添加第三个循环

$output = json_decode($result2);
foreach($output as $SuiFag) {
    for($i=0; $i<count($SuiFag);$i++) {
        for($x=0; $x<count($SuiFag[$i]);$x++) {
            echo $SuiFag[$i][$x] . '<br>';
        }
    }
}
?>

由于你的json中只有aaData,你可以缩短它,但是允许你的json数组中有更多项:

foreach($output->aaData as $SuiFag) {
    for($i=0; $i<count($SuiFag);$i++) {
        echo $SuiFag[$i] . '<br>';
    }
}

对lamp76的信用