Я сохранил путь XML к элементам в строке, подобной этой: response->items->item
.Доступ к многомерному массиву php на основе переменной строки
Что мне нужно сделать, чтобы получить доступ к массиву с именем $ xml_array так:
$ xml_array [ 'ответ'] [ 'элементы'] [ 'пункт']
Когда я пишу это в код он работает. Дело в том, что я хочу, чтобы это было сделано «на лету».
Я использую это для преобразования response->items->item
в ['response']['items']['item']
:
$xml_path = 'response->items->item';
$explode_path = explode('->', $xml_path);
$correct_string = false;
foreach($explode_path as $path) {
$correct_string .= '[\''.$path.'\']';
}
проблема заключается в том, что я не могу получить доступ к $xml_array
делая это: $xml_array[$correct_string]
Так что я в конечном итоге с этим:
$xml_tag = 'title';
$xml_path = 'response->items->item';
$correct_string = '$items = $xml2array';
$explode_path = explode('->', $xml_path);
foreach($explode_path as $path) {
$correct_string .= '[\''.$path.'\']';
}
$correct_string .= ';';
eval($correct_string);
foreach($items as $item) {
echo $item[$xml_tag].'<br />';
}
и получить доступ к массиву $xml_array
через массив $items
. Есть ли способ сделать это и не использовать eval()?
Заранее благодарен!
Большое вам спасибо за это! что, если я хочу автоматически генерировать переменную $ items вместо того, чтобы вручную записывать $ explode_path [0] и т. д.? В конце концов, я получу это из MySQL. –
ОК получил: '$ explode_path = explode ('->', $ xml_path); $ count_explode = count ($ explode_path); $ items = $ xml2array; for ($ i = 0; $ i <$ count_explode; $ i ++) { \t $ items = $ items [$ explode_path [$ i]]; } ' –