Ошибка разбора: синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR - PullRequest
1 голос
/ 09 июля 2010

При попытке добавить некоторые данные из 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 напрямую, так как он содержит конфиденциальные данные.

Спасибо, Sam

1 Ответ

12 голосов
/ 09 июля 2010

Знак - означает вычитание.Чтобы использовать его в именах свойств, вы должны использовать этот синтаксис:

$firstName = (string) $order->{"billing-address"}->{"first-name"};
$lastName = (string) $order->{"billing-address"}->{"last-name"};

В целом, вероятно, лучше использовать firstName, billingAddress и т. Д. В качестве имен свойств, чтобы избежать этого.См. CamelCase .Однако в этом случае вы не можете контролировать ввод XML.

...