2012-08-10 71 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