@banny_name

Почему не вызывается объект по переменной?

есть строка
$str = "one->two->three";

делаю:
$xml = simple_xml_load_string....;

$xml->$str;

Не работает...
как когда в ручную все ввожу, тоесть:
$xml->one->two->three;
То все хорошо, почему так, и как это обойти?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
nazarpc
@nazarpc
Open Source enthusiast
Так работает только для одного свойства, то есть у вас получается:
$xml->{'one->two->three'}

Для того, чтобы получить желаемое разбейте строку на части с помощью explode и пройдитесь циклом, вытаскивая одно вложенное свойство за раз, примерно так:
$str = "one->two->three";
$xml = simple_xml_load_string....;
$result = $xml;
foreach (explode('->', $str) as $s) {
    $result = $result->$s;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
Эм... первый раз вижу такой способ добратся до дерева xml.

$a->b это обращение к значению внутри объекта.

"a->b" это просто строка.
Ответ написан
Ваш ответ на вопрос

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

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