我的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>