2015-10-25 26 views
3

我提出这个问题3天前,但不幸的是我不能解决我的问题,直到现在。我会再次提出这个问题,希望有人帮助我。访问嵌套的项目从一个JSON结构与foreach PHP产生错误

我有以下JSON结构

{"Id":"1","Persons":[{"Name":"Luis","Time":"00:00:09","info":"","Timeext":"","Timeout":"","Timein":""}, {"Name":"Carl","Time":"00:00:03","info":"","Timeext":"","Timeout":"","Timein":""},{"Name":"Ben","Time":"00:00:08","info":"","Timeext":"","Timeout":"","Timein":""}]} 

向该元件Id不是访问的问题。我能得到这个值是这样的:

$arr['Id'] = $_POST['Id']; 
echo $arr['Id']; 

但是,如果要访问的结构Persons的JSON的内部,具体到每个人的时间价值,我这样做:

$arr['Persons'] = $_POST['Persons']; 
    $jsdecode = json_decode($arr['Persons']); 

    foreach ($arr['Persons'] as $p){ 
     echo "$p->Time <br/>"; 
    } 

这是得到的结果:

<b>Warning</b>: json_decode() expects parameter 1 to be string, array given in <b>C:\xampp\htdocs\Stopuhr\controller\prozess.controller.php</b> on line <b>38</b><br /> 
<br /> 
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\Stopuhr\controller\prozess.controller.php</b> on line <b>41</b><br /> 
<br/><br /> 
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\Stopuhr\controller\prozess.controller.php</b> on line <b>41</b><br /> 
<br/> 

请有人帮助我吗?

+0

你能分享$ _POST ['Persons']的输出吗?你有没有检查你是否得到正确的输入? – kakajan

+0

您可以将第二个参数'true'添加到'json_decode',这样它将返回一个关联数组而不是一个对象。 – Crecket

+0

如果你想从数组创建json使用['json_encode'](http://php.net/json_encode)而不是['json_decode'](http://php.net/json_decode) – kakajan

回答

1

你有一个语法错误:

{"Id":"1","Persons":[ 
{"Name":"Luis","Time":"00:00:09","info":"","Timeext":"","Timeout":"","Timein":""}, 
{"Name":"Carl","Time":"00:00:03","info":"","Timeext":"","Timeout":"","Timein":""}, 
{"Name":"Luis","Time":"00:00:08","info":"","Timeext":"","Timeout":"","Timein":""} 
]} 

名称路易斯之前没有逗号。

你应该总是验证在http://jsonlint.com/

+0

THX!这是一个版本错误:) –

2

json_encode() - PHP Array to JSON

json_encode()方法的编码的JSON将采取PHP数组并对其进行编码为JSON准备通过AJAX调用消耗。

$myarray = array('Guitar' => 'Johnny', 'Vocals'=> 'Stephen', 'Bass' => 'Andy', 'Drums' => 'Mike'); 
$myJson = json_encode($myarray); 
echo $myJson; 

json_decode() - JSON to PHP Array

json_decode()将JSON并将其转换成一个PHP数组。

$myJson = '{"Guitar" : "Johnny", "Vocals": "Stephen", "Bass" : "Andy", "Drums" : "Mike"}'; 
$myarray = json_decode($myJson, true); 
print_r($myarray);