-1

可能重复:
带有连字符名称的 SimpleXML Reading 节点

我解析包含如下字段的 xml 文件:

<offers>
    <offer>
       <type>Vehicle</type>
       <type-id>2</type-id>
       <category>Car</category>
       <category-id>3</category-id>
       ...
    </offer>
    <offer>
       <type>Vehicle</type>
       <type-id>2</type-id>
       <category>Car</category>
       <category-id>3</category-id>
       ...
    </offer>
    ...
</offers>

首先使用$xml = simplexml_load_file($file);,然后尝试在 foreach 循环中获取值后,我收到错误“使用未定义的常量 id - 假定为 'id'”,因为字段包含 'id' 作为其中的一部分,如 'type-id' 或 'category-id'

 foreach($xml->offers->offer as $offer) {
                    echo $offer->type; // WORKS JUST FINE
                echo $offer->type-id; //THIS GIVE ME ERROR                              
              }      

我试图设置ini_set('error_reporting', E_ALL & ~E_NOTICE);但在它之后带有“id”的字段返回零而不是值。

4

3 回答 3

6

变量名是"type-id",不能简单写成$type-id,需要用大括号访问:${"type-id"}

echo $offer->{"type-id"};
于 2013-01-17T09:55:31.430 回答
1

试试这个:

foreach($xml->offers->offer as $offer) {
    echo $offer->type;
    $typeId = 'type-id';
    echo $offer->{$typeId};                        
}  
于 2013-01-17T09:54:26.867 回答
0

您必须使用 { 和 } 访问对象/变量

echo $offer->{type-id};
于 2013-01-17T09:54:53.700 回答