@fastboot

PHP $array[$custom_path] как указать свой путь?

Имею вот это:
$map[] = tree;
$map[] = items;
$map[] = 0;
$map[] = items;
$map[] = 5;
$map[] = items;
$map[] = 1;
$map[] = items;
$map[] = 0;

Использовать $map для построения ветки, что бы эту ветку использовать как указатель массива.

$array [вот тут я хочу указать путь ветки][name] = "New name";
$array [вот тут я хочу указать путь ветки][name_img] = "./favicon.ico";
$array [вот тут я хочу указать путь ветки][name_description] = "New description";

Хочу примерно сделать это:
$path = [tree][items][0][items][5][items][1][items][0][name];
$array{[$path]} = "New name";

Если что:
var_dump( $array[tree][items][0][items][5][items][1][items][0][name] );
Возвращает:
string(20) "Дополнительный пункт"

Нужно просто $path указать путь в массиве и установить новые параметры в этой ветке массива.
Почему? потому что есть рекурсия ветки, веток дерево может быть бесконечно (утрирую, просто много)
  • Вопрос задан
  • 497 просмотров
Решения вопроса 1
@fastboot Автор вопроса
function tree_array_read (array $array, array $map)
{
$path = "[tree]";
foreach ( $map as $ID => $VALUE)
{

$path .= "[items][{$VALUE}]";
}

$code = "\$out = \$array{$path};";
eval ( $code );
return $out;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
Телепат говорит мне, что это какой-то парсер и можно вклиниться немного раньше с xpath или jsonpath запросами для получения нужных данных.
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Как раз сегодня был вопрос о конвертации многомерного массива в одномерный
Как сконвертировать многомерный ассоциативный массив в одномерный с сохранением пути?

Конвертируете исходный массив в плоский, и тогда путь до любого элемента можно будет задать строкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы