複数次元配列の中のオブジェクトPHP

流れる配列はvar $ itemsに格納されます(それ以上)。

"c74a0dba-5407-4f90-b04e-fdc88c4dd434": {
"0": {
"value": "Suffolk"
}
},
"91866e91-70d7-405f-900c-475d0c027399": {
"country": {
"0": "GB"
}
},

配列を表示するには、以下を使用します。

$county = json_decode($items); 
var_dump($county);

これが印刷されます

[c74a0dba-5407-4f90-b04e-fdc88c4dd434"]=> object(stdClass)#24 (1) { ["0"]=> object(stdClass)#25 (1) { ["value"]=> string(15) "Suffolk" } } ["91866e91-70d7-405f-900c-475d0c027399"]=> object(stdClass)#26 (1) { ["country"]=> object(stdClass)#27 (1) { ["0"]=> string(2) "GB" } }

私は郡情報 'サフォーク'の一意の識別子を使用して抽出する必要があります。

私は以下を試みたが、それはサーバーエラーを生成する

$result_county = $county->getElement('c74a0dba-5408-4f90-b04e-fdc88c4dd434')->getElementData()->get('value');

以下は、配列全体のvar_dumpです。識別子 c74a0dba-5408-4f90-b04e-fdc88c4dd434 は、各アイテム配列に対して同じです。

object(stdClass)#2 (18) { ["4d612549-f4cd-4487-ba42-f091ece35391"]=> object(stdClass)#3 (1) { ["0"]=> object(stdClass)#4 (1) { ["value"]=> string(13) "East Newlem" } } ["5eb77708-72e8-4587-b65e-ee50eb0f9e6d"]=> object(stdClass)#5 (1) { ["0"]=> object(stdClass)#6 (1) { ["value"]=> string(24) "Hillside Estate" } } ["520720dc-c480-405a-ac56-bf317f48d860"]=> object(stdClass)#7 (1) { ["0"]=> object(stdClass)#8 (1) { ["value"]=> string(17) "11 Rees Drive" } } [ECT...

何か案は?

1
nl ru de

2 答え

これを以下の方法で配列として扱うと

$array = json_decode($items,true);
echo "
",print_r($array,true),"
"; $key ="c74a0dba-5408-4f90-b04e-fdc88c4dd434"; echo $array[$key][0]['value'];

それは以下のような構造体を生成し配列します:

Array
(
    [4d612549-f4cd-4345-ba42-f091ece35391] => Array
        (
        [0] => Array
            (
            [value] => East Newlem
            )
        )
    [5eb77708-72e8-4676-b65e-ee50eb0f9e6d] => Array
        (
        [0] => Array
            (
            [value] =>Hillside Estate
            )
        )
)

json_decoded 第2引数をtrueに設定すると、以前のオブジェクトではなく配列が返されます。 私は配列よりもオブジェクトを優先しますが、コンテキストやデータが表すもの(配列やオブジェクト)についてはすべてです。

抽出後に複合オブジェクトがあるように見えます。このプロセスは、非オブジェクトがオブジェクトに変換されるときに典型的な多くのオブジェクト( stdClass )を生成しています。 instsnceの場合、配列の例をオブジェクトに変換すると、生成されるオブジェクト(stdClass)は、キーとその対応する値によって名前が付けられたプロパティを持ちます。私はこれがあなたがここで見ているものだと思います。

最初は、主に3つのキーで構成されたxオブジェクトを保持するコンテナオブジェクトがあります。最初の2つはオブジェクト値を持ち、3つ目は文字列値です。標準オブジェクトのような情報へのアクセス:

echo $county->{4d612549-f4cd-4487-ba42-f091ece35391}->{0}->value;

'East Newlem'を返す必要があります(中括弧内の値を引用符で囲まない場合)。

オブジェクトに壊れたデータは以下のようになります:

object(stdClass)#2 (18) {
["4d612549-f4cd-4487-ba42-f091ece35391"]=>
    object(stdClass)#3 (1) { ["0"]=>
        object(stdClass)#4 (1) { ["value"]=> string(13) "East Newlem" }
}
["5eb77708-72e8-4587-b65e-ee50eb0f9e6d"]=>
    object(stdClass)#5 (1) { ["0"]=>
        object(stdClass)#6 (1) { ["value"]=> string(24) "Hillside Estate" }
}

お役に立てれば

2
追加された
それはかなりabitを説明します。 json_decodeの関連配列として返される返されたオブジェクトを選択しました。ありがとう
追加された 著者 Dev Hardyman,
$county = json_decode($items, true); /// which will give you array


foreach($county as $val){
   echo $val[0]['value'];
}
1
追加された
@DevHardyman:クール:D
追加された 著者 Prasanth Bendra,
うん、それは今すぐ歓声を得た
追加された 著者 Dev Hardyman,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com