解析错误:语法错误,意外T_OBJECT_OPERATOR

Sam*_*Sam 1 php xml simplexml

尝试将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;
    }
Run Code Online (Sandbox Code Playgroud)

我不能直接提供我的XML,因为它包含敏感数据.

谢谢,山姆

Art*_*cto 12

该-标志的含义是减法.要在属性名称中使用它,您必须使用以下语法:

$firstName = (string) $order->{"billing-address"}->{"first-name"};
$lastName = (string) $order->{"billing-address"}->{"last-name"};
Run Code Online (Sandbox Code Playgroud)

一般来说,使用,等等作为属性名称可能更好firstName,billingAddress以避免这种情况.见CamelCase.但是,在这种情况下,您可能无法控制XML输入.

  • @Sam现在代码的方式,PHP理解:`$ order-> billing - address-> first - name;`地址和名称被认为是用于此目的的常量.但是你没有定义那些常量,所以PHP认为你的意思是字符串"address"和"name"并尝试使用[T_OBJECT_OPERATOR](http://php.net/manual/en/tokens.php),例如字符串上的` - >`不起作用. (3认同)