2014-01-27 86 views
-1

我正在使用以json格式返回數組的API。被接收的JSON的代碼是:如何在PHP中訪問json數組的特定字段?

Array ([0] => Array ([phone] => 00[_id] => 52e68920acfced017af80234 [name] => John [email] => [email protected] [country] => France) [1] => Array ([phone] => 111222333 [_id] => 52e68acas87fa0987a [name] => James [email] => [email protected] [country] => Germany)) 

我要訪問我的PHP文件單獨處理數據的JSON數組的各個領域。例如,訪問第一寄存器的名字,我用下面的代碼:

$cuerpoRespuesta = ejecutarPOST($URLS['retrieve'], $api_id, $api_key, array()); // This is the API call and I keep the json array in "$cuerpoRespuesta". 

$data = json_decode($cuerpoRespuesta, TRUE); //Now I decode json array 
echo $data[0]["name"];      //Here I show data 

但不顯示任何東西,我得到以下錯誤:

Warning: json_decode() expects parameter 1 to be string, array Given in C:\Retrieve.php on line 65

線65對應於json_decode。我究竟做錯了什麼?我在這裏先向您的幫助表示感謝。

UPDATE

我已經試過的var_dump($ cuerpoRespuesta)功能,我得到這個:

array (size=2) 
    0 => 
    array (size=5) 
     'phone' => string '00' (length=9) 
     '_id' => string '52e68920acfced017af80234' (length=24) 
     'name' => string 'John' (length=4) 
     'email' => string '[email protected]' (length=14) 
     'country' => string 'France' (length=6) 
    1 => 
    array (size=5) 
     'phone' => string '00' (length=9) 
     '_id' => string '52e68ac7acfced017af80235' (length=24) 
     'name' => string 'John' (length=4) 
     'email' => string '[email protected]' (length=14) 
     'country' => string 'France' (length=6) 

根據API文檔是JSON,但是......如果不是,我不知道它是什麼:/

+1

的錯誤是非常不言自明:檢查什麼是'$ cuerpoRespuesta'通過發出'的var_dump($ cuerpoRespuesta)',並檢查什麼正在發生。順便說一句,我建議你不要用本地語言編寫代碼[以西班牙語爲例],它會讓你更難理解你在像StackOverflow這樣的更廣泛的受衆中正在做什麼。 – moonwave99

+1

它看起來不像JSON,所以你不需要做json_decode。 –

+0

謝謝你的答案。 moonwave99,我不知道如何使用「var_dump ...」你能解釋一下嗎?非常感謝。 Phil,根據我使用的API文檔,返回的數組是JSON格式。 :/ – Monchou2

回答

0

據喲你的var_dump($ cuerpoRespuesta),你已經有了你的數組,所以你只需要訪問你想要的東西。你不需要json_decode你的$ cuerpoRespuesta var。

您可以訪問域是這樣的:

echo $cuerpoRespuesta[0]['name']; 
+0

非常感謝,我瘋了試圖解碼不是json的json。固定! – Monchou2