Задать вопрос
@banny_name

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

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

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

$xml->$str;

Не работает...
как когда в ручную все ввожу, тоесть:
$xml->one->two->three;
То все хорошо, почему так, и как это обойти?
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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" это просто строка.
Ответ написан
Ваш ответ на вопрос

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

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