ホームページ > バックエンド開発 > PHPチュートリアル > php5.6.14 object转换为array 发现的一个问题,怀疑是php的bug,请大神分析下

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-06 20:13:36
オリジナル
847 人が閲覧しました

我的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>
ログイン後にコピー
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート