2015-10-25 25 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);