Я не могу прочитать массив


у меня есть следующий код

$xml = simplexml_load_string($xml_raw);
foreach ($xml->$user-agent as $ua):
    print $ua->String;
endforeach;

и ничего не делает, per печатает это: Notice: Undefined переменная: user in /var/www/html/u.php on line 4

Notice: Use of undefined constant agent-assumed 'agent' in /var/www/html/u.php on line 4

Warning: Invalid argument supplied for foreach () in /var/www/html/u.php on line 4

 1
php
Author: sanandresm, 2016-05-09

1 answers

Проблема в том, что в XML тег имеет имя с дефисом (user-agent), поэтому вы не можете получить доступ к этому значению, используя нотацию $xml->$user-agent. В документации PHP Вы можете найти примечание об этом (мой перевод):

В XML-документе для доступа к элементам, содержащим символ, не разрешенный в номенклатуре PHP (например, дефисы), имя элемента должно быть заключено в кавычки и заключено в фигурные скобки.

Так что вы должны сделать это использовать нотацию с фигурными скобками, которая в вашем случае будет выглядеть примерно так:

$xml->{'user-agent'}
 1
Author: Alvaro Montoro, 2016-05-09 14:34:55