Объекты внутри массивов Multi Dimenisonal PHP

Текущая массив хранится в параметрах var $ (плюс больше).

"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 ja 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
            )
        )
)

Если вы установите для 2-го аргумента json_decoded значение true, он вернет массив, а не предыдущие объекты. Я предпочитаю объекты поверх массивов, но все о контексте и о том, что представляют данные (массив или объект).

Похоже, у вас есть составные объекты после извлечения. Процесс сгенерировал много объектов ( stdClass ), что типично, когда не объект преобразуется в объект. Для instsnce, если примерный массив преобразован в объект, объект, сгенерированный (stdClass), будет иметь свойства, которые называются ключами и их соответствующими значениями. Я думаю, это то, что вы здесь видите.

Первоначально существует объект-контейнер, содержащий объекты x, которые в основном состоят из 3-х ключей, первые 2 из которых имеют значения объекта, а третье - строковое значение. Доступ к информации как стандартного объекта:

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

«Восточный Ньюлем» должен быть возвращен (если не попытаться разместить кавычки вокруг значений в фигурных скобках).

Разбитые в объекты данные выглядят следующим образом:

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, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp