在获取键和值中json_decoded数组



我有一个数组,它来自javascript/jquery的POST请求。在 php 中,数组内容如下:

[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}]

如何遍历此数组以获取键和值?

当我这样做时:json_decode($_POST['shape_defs'])

如何遍历此数组。做foreach 说:

为 foreach() 提供的参数无效

虽然(当前)其他两个答案确实得到了工作代码,但它们无法解决为什么你会得到错误。

$data = json_decode($j);
var_dump($data);

这将生成一个对象,其中键作为属性。对象除非实现Traversable,否则传递给foreach无效。

您需要做的是:

$data = json_decode($j,true);

这将使对象成为关联数组,这些数组与foreach兼容,并且很可能与代码的其余部分兼容。

当有一定数量的子项时,可以使用嵌套的 foreach-loops:

$json = '[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},    {"name":"manual","def":"somestring"}]';
$decode = json_decode($json, true);
foreach ($decode as $k1 => $v1) {
    foreach ($v1 as $k2 => $v2) {
        echo "$k2: $v2, ";
    }
    echo "<br>";
}

它将输出以下内容:

name: Ta, def: somestring, <br>
name: WSCall, def: somestring, <br>
name: manual, def: somestring, <br>
$j= '[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}]';
$data = json_decode($j,true);
foreach($data as $key=>$val){
 foreach($val as $k=>$v){
   echo "Key :".$k."  Value :".$v."<br />";
 }
}

最新更新