php5.6.14 object轉換為array 發現的一個問題,懷疑是php的bug,請大神分析下

來源:互聯網
上載者:User
關鍵字 php
我的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;    //貌似這樣也是可以使用的;
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.