Итак, я написал класс, который может анализировать XML-документы и создавать из него SQL-запросы для обновления или вставки новых строк в зависимости от настроек.
Поскольку скрипт должен работать с любым количеством вложенных блоков, массив, в который я помещаю все значения, имеет динамически созданный путь, как в следующем примере:
$path = array('field1','field2');
$path = "['".implode("']['",$path)."']";
eval("\$array".$path."['value'] = 'test';");
В основном $path
содержит массив, который показывает, насколько глубоко мы сейчас находимся в массиве, если $path
содержит, например, значения main_table
и field
Я хочу установить $array['main_table']['field']['value']
в 'test'
Как вы видите, я сейчас использую eval для этого, и это прекрасно работает. Мне просто интересно, есть ли способ сделать это без использования eval.
что-то вроде
$array{$path}['value'] = 'test';
но потом что-то, что действительно работает.
Есть предложения?
EDIT
Причина, по которой я ищу альтернативу, в том, что я считаю, что eval - плохая практика.
ВТОРОЕ РЕДАКТИРОВАНИЕ
Изменил фактический код на фиктивный, потому что он вызывал много недоразумений.