0

jsonでデコードされ、次のようなデータがあります。

stdClass Object
(
    [6] => stdClass Object
        (
            [13] => stdClass Object
                (
                    [buildingId] => 1
                )

        )

    [8] => stdClass Object
        (
            [20] => stdClass Object
                (
                    [Id] => 1
                )

        )

スクリプトで使用するための情報を取得するためにループする方法がわかりません。

たとえば、次の情報を取得する必要があります。

$key, $innerkey, $Id = 1
Object [8][20].Id = 1

2つの数値はX;Y座標であるため、IDだけでなくこれらの値も取得することが重要です。

私はなんとか最初の鍵を手に入れました:

$obj = JSON_decode($_GET['data']);  
    foreach($obj as $key) { 
        echo $key;                      
    }

変数に割り当てられた内部キーを取得するにはどうすればよいですか?

4

4 に答える 4

2

json_decode($_GET['data']);に変更json_decode($_GET['data'], true);

2 番目のパラメーターが の場合はtrue配列を返します。それ以外の場合はオブジェクトです。

$obj = json_decode($_GET['data'], true);  
    foreach($obj as $key=>$val) { 
        foreach($val as $k=>$v){
           echo $k." : ".$v['Id'];
           echo "<br>";
        }                      
    }

参照: http://php.net/manual/en/function.json-decode.php

于 2013-02-21T05:08:13.237 に答える
2

数値キーを {} でラップする必要があります。PHPの警告のようなもの。

echo $obj->{8}->{20}->Id;

于 2013-02-21T05:00:57.300 に答える
0

以下のように、これには2つのforeachループを使用する必要があります

$obj = JSON_decode($_GET['data']);  
    foreach($obj as $key) { 
        foreach($key as $val) { 
          echo $val->id;                      
        }                    
    }

更新された回答

$obj->{8}->{20}->Id = 10; // assigned the value for testing purpose. 

$a = 8;
$b = 20;

echo $obj->$a->$b->Id;
于 2013-02-21T04:52:05.620 に答える
0

これのことですか?

$array = (array)json_decode($_GET['data']);  
foreach ($array as $key) { 
    var_dump($key);
}

また

$array = json_decode($_GET['data'], true);  
foreach ($array as $key) { 
    var_dump($key);
}

json_decode() の 2. パラメータ: true: 配列へ、false: オブジェクトへ。

于 2013-02-21T05:03:41.200 に答える