我的php版本是php5.6.14,用的是xampp環境,
今天寫代碼偶然發現一個問題,請各位大神一起分析下:
$str = '{"0":"辦公室","1":"會議室","2":"室外場地"}'; $obj = json_decode($str); var_dump($obj); $arr = (array) $obj; var_dump($arr); foreach ($arr as $key => $value) { echo $arr[$key]; }
發現輸出$arr[$key]的時候回報index undefined,但是問題是執行var_dump($arr);發現它已經是一個數組,並且0下標有值,請各位大神分析下,看看是不是php的bug.
回複內容:
我的php版本是php5.6.14,用的是xampp環境,
今天寫代碼偶然發現一個問題,請各位大神一起分析下:
$str = '{"0":"辦公室","1":"會議室","2":"室外場地"}'; $obj = json_decode($str); var_dump($obj); $arr = (array) $obj; var_dump($arr); foreach ($arr as $key => $value) { echo $arr[$key]; }
發現輸出$arr[$key]的時候回報index undefined,但是問題是執行var_dump($arr);發現它已經是一個數組,並且0下標有值,請各位大神分析下,看看是不是php的bug.
應該是bug,不過影響很小。等效測試代碼:
$obj = new stdClass();$key = 0;$obj->$key = 1;var_dump($obj);$arr = (array) $obj;var_dump($arr);echo $arr[0];
不過沒什麼意義,因為對象是不能用數字作為屬性名稱的,在錯誤使用的基礎上產生的錯誤沒價值。
是你自己函數使用錯誤,
$obj = json_decode($str, true); //這樣是可以使用的;$obj = (array)$str; //貌似這樣也是可以使用的;