Ошибка разбора: синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR
Я получаю следующую ошибку при попытке добавить некоторые данные из myXml.xml в строку: Ошибка разбора: синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR.
$xmlstr = file_get_contents('myXml.xml');
$xml = new SimpleXMLElement($xmlstr);
foreach($xml->order as $order){
$replace = array();
$firstName = (string) $order->billing-address->first-name;
$lastName = (string) $order->billing-address->last-name;
}
Я не могу предоставить свой XML напрямую, так как он содержит конфиденциальные данные.
Спасибо Сэм
1 ответ
Решение
-
Знак означает вычитание. Чтобы использовать его в именах свойств, вы должны использовать этот синтаксис:
$firstName = (string) $order->{"billing-address"}->{"first-name"};
$lastName = (string) $order->{"billing-address"}->{"last-name"};
В общем, лучше использовать firstName
, billingAddress
и т.д. как имена свойств, чтобы избежать этого. Смотрите CamelCase. В этом случае, однако, вы можете не иметь никакого контроля над вводом XML.