2012-08-10 78 views
0
$arr = array(); 
$arr[0] = "2a123"; 
$arr[1] = "2123"; 
$arr["other_option"] = "2123"; 

var_dump($arr); 

$arr = json_encode($arr); 

$arr = (array)json_decode($arr); 

var_dump($arr); 

var_dump($arr[1]); 
var_dump($arr["1"]); 

創建在陣列從stdClass的轉換元件2最後的var_dump的輸出是NULL NULL,如果我們去掉第四線$ ARR [「other_option」] =「2123」;它會輸出正確,但我不明白爲什麼!不能訪問由json_decode

+0

什麼是'的var_dump($ ARR)的輸出;'? – 2012-08-10 09:27:27

+1

提示:嘗試'json_decode($ json,true)',而不是使用'(array)'進行類型轉換' – diEcho 2012-08-10 09:27:59

+0

diEcho的提示像一個魅力一樣工作,但我仍然不明白爲什麼,它是類型轉換中的PHP錯誤? – 2012-08-10 09:32:44

回答

2

代替型鑄造到陣列,在json_encode

設置true爲TRUE時,返回的對象將被轉換成關聯數組。

$arr = array(); 
$arr[0] = "2a123"; 
$arr[1] = "2123"; 
$arr["other_option"] = "2123"; 
$arr = json_encode($arr); 
$arr = json_decode($arr,true); 
var_dump($arr['other_option']); // return 2123 

working DEMO