2013-11-01 76 views
0

我現在使用下面的代碼:如何使用這個JSON數組?

$json = json_decode($content, true); 

var_dump($json); 

echo $json[0]['article']; 

的var_dump($ JSON);

array(36) { 
[0]=> string(53) "{"article":"Milk","==":"RandomString"}" 
[1]=> string(56) "{"article":"Water","==":"RandomString"}" 
[2]=> string(68) "{"article":"Beef","amount":3,"==":"RandomString"}" 

[3]=> string(4) "null" [4]=> string(4) "null" [5]=> string(4) "null" [6]=> string(4) "null" [7]=> string(4) "null" [8]=> string(4) "null" [9]=> string(4) "null" [10]=> string(4) "null" [11]=> string(4) "null" [12]=> string(4) "null" [13]=> string(4) "null" [14]=> string(4) "null" 
} 

但它返回:

Warning: Illegal string offset 'article' in json.php on line 17 
{ 

(是的,這{末過於輸出)

任何人有一個想法,我怎麼能正確地得到這個數組?如果有的話,我怎麼也能得到金額?

+2

如果你看看var轉儲,它是一個字符串,而不是一個數組。含義'$ content'是有效的json,但格式錯誤。 –

+0

你可以發佈'var_dump($ content);'的輸出嗎? –

+1

它看起來像$ json [0]本身就是另一個json字符串。要作爲一個對象訪問它,你也需要對它進行json_decode。 –

回答

0

每個數組元素是JSON的另一個字符串,因此您需要在每個數組元素上運行json_decode()。下面的例子是這樣做的,並覆蓋原始元素,所以$json已完全解碼。

foreach($json as $key => $moreJson) 
{ 
    $json[$key] = json_decode($moreJson, true); 
} 

echo $json[0]['article']; 
+0

那麼,他已經將'json_decode()'的第二個參數傳遞爲'TRUE' - '$ json = json_decode($ content,true);'。 –

+0

謝謝,錯過了:) – MrCode

+0

它不會工作。 'foreach'內的'json_decode()'也需要'TRUE'。 :) –