как получить доступ к сложному объекту в php - PullRequest
0 голосов
/ 15 февраля 2020

У меня следующая структура данных $ all =

[0] => stdClass Object
    (
        [abc@gmail.com] => Array
            (
                [usr] => 130
                [fname] => Bob
                [lname] => thekid
                [email] => abc@gmail.com
                [news] => 0
                [wres] => 1
                [SWAGLeaders] => 0
                [cca-cpg] => 1
                [cleanup-cpg] => 0
                [gas-cpg] => 1
                [pollinators-cpg] => 0
                [climate-int] => 0
                [composting-int] => 0
                [energy-int] => 1
                [other-int] => 0
                [pollinators-int] => 0
                [recycling-int] => 0
                [transport-int] => 1
                [trees-int] => 0
                [water-int] => 0
            )

    )

Как получить доступ к внутренним ключам / значениям?

Я пытался print_r($all[0]['abc@gmail.com']);, но это ничего не дало

также, является ли 'abc@gmail.com' ключом? или переменная? Я думал, что это ключ, значение которого является массивом, а затем внутри массива у нас есть дополнительные пары ключ / значение

1 Ответ

4 голосов
/ 15 февраля 2020

Это явно объект (обозначенный stdClass Object в этом выводе), а не массив. Вы можете получить к нему доступ $all->{"abc@gmail.com"}. Вот как вы вводите сложную интерполяцию вместо символа PHP, где символ нарушает правила именования PHP. Так, например, свойства объекта с дефисами или другими недопустимыми символами в них можно принудительно оценить как строки, а затем как имена свойств, заключив их в строки, а затем в фигурные скобки: $obj->{"this-is-ok"}, тогда как $obj->this-is-not.

В качестве примечания: если этот объект происходит от JSON, вы всегда можете принудительно сохранить его в виде массива, используя второй аргумент json_decode(), который, если установить значение true, заставит объект вместо этого будет построен как массив. Для некоторых людей это может облегчить разыменование ключей. Поэтому, если $all["abc@gmail.com"] кажется вам более естественным, чем $all->{"abc@gmail.com"}, это может быть лучшим подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...