Home >Backend Development >PHP Tutorial >php5.6.14 object转换为array 发现的一个问题,怀疑是php的bug,请大神分析下

php5.6.14 object转换为array 发现的一个问题,怀疑是php的bug,请大神分析下

WBOY
WBOYOriginal
2016-06-06 20:13:36822browse

我的php版本是php5.6.14,用的是xampp环境,

今天写代码偶然发现一个问题,请各位大神一起分析下:

<code>    $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];
   }
</code>

发现输出$arr[$key]的时候回报index undefined,但是问题是执行var_dump($arr);发现它已经是一个数组,并且0下标有值,请各位大神分析下,看看是不是php的bug.

回复内容:

我的php版本是php5.6.14,用的是xampp环境,

今天写代码偶然发现一个问题,请各位大神一起分析下:

<code>    $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];
   }
</code>

发现输出$arr[$key]的时候回报index undefined,但是问题是执行var_dump($arr);发现它已经是一个数组,并且0下标有值,请各位大神分析下,看看是不是php的bug.

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

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

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

是你自己函数使用错误,

<code>$obj = json_decode($str, true);    //这样是可以使用的;
$obj = (array)$str;    //貌似这样也是可以使用的;</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn