2016-11-21 91 views
-1

我在PHP中有一個變量$arr。它裏面有以下數據。如何通過PHP中的JSON對象循環?

這是我的PHP代碼。

$data = array(
     'Request' => 'StockStatus', 
     'merchant_id' => 'shipm8', 
     'hash' => '09335f393d4155d9334ed61385712999' 
     ); 

    $url = 'https://ship2you.com/ship2you/'; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_PORT, 443); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    $result = curl_exec($ch); 
    curl_close($ch); 

    $arr = json_decode($result, true); 

    foreach ($arr as $value) { 
     echo $value['packagename']; 
    } 

enter image description here

我想通過它循環。我怎樣才能實現它?我嘗試使用foreach,但它給了我錯誤。提前致謝。

+0

顯示您是如何使用foreach的? –

+0

也發佈確切的錯誤消息。 – Dencker

+1

可能的重複[如何通過JSON對象循環](http://stackoverflow.com/questions/16290798/how-do-i-loop-through-json-object) – Xorifelse

回答

1

你有你的CURL output string兩次解碼: -

$arr = json_decode(json_decode($result, true),true); 

foreach ($arr as $value) { 
    echo "<pre/>";print_r($value['packagename']); 
} 

注: - @Xatenev提到了正確的事情: -

的JSON逃脫的報價。當帶有轉義引號的json傳遞給json_decode()時,它只會刪除所有轉義的序列。當再次撥打json_decode()時,它會正確解碼

+0

爲什麼我必須做兩次? –

+0

它的工作原理。非常感謝。但爲什麼兩次? –

+0

@AliZia看起來,雙編碼或你可以說嵌套編碼的字符串來自'CURL'請求 –

0
json_decode($json, true); 

如果第二個參數爲真時,它會返回陣列。如果不是您要查找的內容,請顯示您的代碼。

0
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_PORT, 443); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$result = curl_exec($ch); 
curl_close($ch); 

$arr = json_decode($result); 



foreach ($arr as $arr_item) { 
    echo $arr_item->user_id; 
}