我有一个数组,它来自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 />";
}
}