Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript php中的json_解码数组-获取键和值_Javascript_Php - Fatal编程技术网

Javascript php中的json_解码数组-获取键和值

Javascript php中的json_解码数组-获取键和值,javascript,php,Javascript,Php,我有一个通过javascript/jquery的POST请求得到的数组。在php中,数组内容如下所示: [{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}] 如何迭代该数组以获取键和值 当我这样做时:json\u解码($\u POST['shape\u defs']) 如何迭代这个数组。为每个人做foreach表示: 为foreac

我有一个通过javascript/jquery的POST请求得到的数组。在php中,数组内容如下所示:

[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}]
如何迭代该数组以获取键和值

当我这样做时:
json\u解码($\u POST['shape\u defs'])

如何迭代这个数组。为每个人做
foreach
表示:

为foreach()提供的参数无效

$j='[{“name”:“Ta”,“def”:“somestring”},{“name”:“WSCall”,“def”:“somestring”},{“name”:“manual”,“def”:“somestring”}];
$data=json_decode($j,true);
foreach($key=>$val的数据){
foreach($val为$k=>$v){
回显“键:.$k.”值:.$v.“
”; } }
当有一定数量的子循环时,可以使用嵌套的foreach循环:

$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>";
}
$json='[{“name”:“Ta”,“def”:“somestring”},{“name”:“WSCall”,“def”:“somestring”},{“name”:“manual”,“def”:“somestring”}];
$decode=json_decode($json,true);
foreach($k1=>v1){
foreach($v1为$k2=>$v2){
回声“$k2:$v2”;
}
回声“
”; }
它将输出以下内容:

name: Ta, def: somestring, <br>
name: WSCall, def: somestring, <br>
name: manual, def: somestring, <br>
name:Ta,def:somestring,
名称:WSCall,定义:somestring,
名称:手动,定义:somestring,
虽然(当前)其他两个答案确实得到了有效的代码,但它们无法说明为什么会出现错误

$data = json_decode($j);
var_dump($data);
这将生成一个对象,并将关键点作为属性。除非对象实现了
可遍历
,否则传递给
foreach
的对象无效

您需要做的是:

$data = json_decode($j,true);

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

您是否对结果进行了json解码?如果不传递第二个布尔参数,我没有收到任何错误?如果执行
var\u dump($data)
操作,则它包含在
foreach中有效的对象数组
$data = json_decode($j,true);