【问题标题】:Parse error: syntax error, unexpected T_OBJECT_OPERATOR解析错误:语法错误,意外的 T_OBJECT_OPERATOR
【发布时间】:2010-07-09 15:34:41
【问题描述】:

尝试将 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,因为它包含敏感数据。

谢谢, 山姆

【问题讨论】:

    标签: php xml simplexml


    【解决方案1】:

    - 符号表示减法。要在属性名称中使用它,您必须使用以下语法:

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

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

    【讨论】:

    • @Sam 你的代码现在的样子,PHP 理解:$order->billing - address->first - name; 地址和名称被视为用于此目的的常量。但是您没有定义这些常量,因此 PHP 认为您的意思是字符串“地址”和“名称”并尝试使用 T_OBJECT_OPERATOR,例如字符串上的-> 不起作用。
    • 太棒了,谢谢你们两位的回答。您没有控制 XML 是对的。我现在就试一试。编辑:完美运行,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2018-06-23
    • 2013-07-28
    • 2012-11-03
    • 2017-03-08
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多