PHP: используйте ключи динамических объектов

Для целей моего веб-сайта мне нужно динамически создавать ключи объектов для моей древовидной структуры JSON во время выполнения. Моя структура вложена, и каждый родительский узел содержит массив дочерних узлов. Эта вложенная структура делает вещи довольно сложными и может сделать ключ очень длинным по мере того, как дерево становится глубже. Однако я не могу это изменить, так как это необходимо для плагина для рисования дерева, который я использую.

Вот что я ищу:

$tree->rootNode->{$varString}->title;

где $tree - это JSON, а $varString может содержать один элемент (например, children[0]) вплоть до более длинного пути (например, children[0]->children[1]->children[1]). Когда я жестко кодирую эти ключи, все работает нормально, но это не позволяет мне генерировать ключи во время выполнения.

Проблема, похоже, связана с использованием строки для хранения ключа. Я могу использовать переменную для хранения одного имени объекта, но не индекса [0] или пути нескольких объектов с помощью оператора ->.

Есть ли способ сделать это, или мне придется использовать совершенно другой подход?

Это не похоже на правильно спроектированную структуру .... почему бы вам вместо этого не использовать объекты?

Nico Haase 23.04.2018 13:04

У меня есть внешний файл Json, содержащий структуру, которая извлекается и затем сохраняется в $ tree. Я не могу изменить структуру, так как это необходимо для плагина для рисования дерева, который я использую. Моя проблема в том, что мне нужно добавлять новую информацию в эту структуру во время выполнения, и мне нужно иметь возможность сгенерировать соответствующий ключ для этого. Я могу указать правильный путь в зависимости от действий пользователя и сохранить его в переменной $ varString, но я не могу использовать эту переменную для создания ключа. Я отредактирую свой вопрос, чтобы было понятнее.

Heather Lumby 23.04.2018 13:20

Прочтите дубликат. Вам нужно рекурсивно перебирать ключ дерева по ключу. ->{$varString} означает, что вы пытаетесь получить доступ к ключу с именем "children[0]->children[1]->children[1]", который, я сомневаюсь, является правильным именем ключа.

deceze 23.04.2018 13:32

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

Heather Lumby 23.04.2018 13:40

Любой foo->$bar всегда будет означать, что он будет искать ключ $bar на объекте foo. Он никогда не будет оценивать, может ли $bar выглядеть как синтаксис нотации доступа к вложенным объектам PHP, и расширять его до foo->$bar[0]->$bar[1]->$bar[2]->.... Это не так. Читать. Файл. Дубликат.

deceze 23.04.2018 13:42

Спасибо. Все, что я хотел знать, - возможно ли это или нет.

Heather Lumby 23.04.2018 13:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
33
0

Другие вопросы по теме