php5.6.14 object转换为array 发现的一个问题,怀疑是php的bug,请大神分析下
ringa_lee
ringa_lee 2017-04-10 17:07:30
[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.

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
大家讲道理

应该是bug,不过影响很小。等效测试代码:

$obj = new stdClass();
$key = 0;
$obj->$key = 1;
var_dump($obj);
$arr = (array) $obj;
var_dump($arr);
echo $arr[0];

不过没什么意义,因为对象是不能用数字作为属性名的,在错误使用的基础上产生的错误没价值。

ringa_lee

是你自己函数使用错误,

$obj = json_decode($str, true);    //这样是可以使用的;
$obj = (array)$str;    //貌似这样也是可以使用的;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号