can';t浏览SimpleXMLElement数据

can';t浏览SimpleXMLElement数据,simplexml,Simplexml,我正在尝试使用REST web服务 下面是代码 //在自定义标头中设置令牌 $options = array( 'http'=>array( 'method'=>"GET", 'header'=>"authorization:$cj_token\r\n")); $context=stream_context_create($options); $mymerchants="https://advertiser-lookup.api.cj.com/v3/a

我正在尝试使用REST web服务

下面是代码 //在自定义标头中设置令牌

$options = array(
    'http'=>array(
    'method'=>"GET",
    'header'=>"authorization:$cj_token\r\n"));

$context=stream_context_create($options);
$mymerchants="https://advertiser-lookup.api.cj.com/v3/advertiser-lookup?advertiser-ids=joined";
$sxml = simplexml_load_string(file_get_contents($mymerchants,false,$context));

foreach ($sxml->advertisers->advertiser as $advertiser) {
    print_r($advertiser);
    //$a = $advertiser->advertiser-id;
    $language = $advertiser->language;      
    //echo "<BR>id=".$a;
    echo "<BR>langauge=".$language;
    echo "<BR><BR>";
}
$options=array(
“http'=>数组(
'方法'=>“获取”,
“头”=>“授权:$cj_令牌\r\n”);
$context=stream\u context\u create($options);
$mymerchants=”https://advertiser-lookup.api.cj.com/v3/advertiser-lookup?advertiser-ids=已连接”;
$sxml=simplexml_load_string(file_get_contents($mymerchants,false,$context));
foreach($sxml->广告商->广告商作为$advertiser){
印刷品(广告商);
//$a=$advertiser->advertiser id;
$language=$advertiser->language;
//echo“
id=”.$a; echo“
langauge=”.$language; 回声“

”; }
$sxml的值如下所示 SimpleXMLElement对象([advertiser]=>SimpleXMLElement对象([@attributes]=>Array([total matched]=>496[返回记录]=>25[页码]=>1)[广告商]=>Array([0]=>SimpleXMLElement对象([advertiser id]=>129899[账户状态]=>Active[seven day epc]=>7.81[三个月epc]=>9.66[语言]=>en[广告商名称]=>BOOKSAMILLION.COM[节目url]=>xhttp://www.booksamillion.com [关系状态]=>已加入[移动跟踪认证]=>错误[网络排名]=>4[主要类别]=>SimpleXMLElement对象([父]=>书籍/媒体[子]=>Books)[绩效激励]=>错误[行动]=>SimpleXMLElement对象([行动]=>SimpleXMLElement对象([name]=>Sale[type]=>Sale[id]=>266[commission]=>SimpleXMLElement对象([default]=>5.00%))[link types]=>SimpleXMLElement对象([link type]=>Array([0]=>Text link[1]=>Banner[2]=>DeepLink[3]=>Advanced link))[1]=>SimpleXMLElement对象([广告商id]=>79362][帐户状态]=>活动[七天epc]=>19.94[三个月epc]=>16.17[语言]=>en[广告商名称]=>Testclear.com[程序url]=>xhttp://www.testclear.com [关系状态]=>已加入[移动跟踪认证]=>错误[网络排名]=>1[主要类别]=>SimpleXMLElement对象([家长]=>健康与健康[儿童]=>健康食品)[绩效激励]=>true[actions]=>simplexmlement对象([action]=>simplexmlement对象([name]=>Sale[type]=>Sale[id]=>234[commission]=>simplexmlement对象([default]=>12.00%)[link types]=>simplexmlement对象([link type]=>Array([0]=>文本链接[1]=>Banner[2]=>DeepLink])[2]=>SimpleXMLElement对象([advertiser id]=>198699[account status]=>Active[seven day epc]=>17.86[Tri month epc]=>10.10[language]=>en[advertiser name]=>Wickers Sportswear,Inc.[program url]=>xhttp://www.wickers.com [关系状态]=>加入[移动跟踪认证]=>错误[网络排名]=>1[主要类别]=>SimpleXMLElement对象([家长]=>Sports&Fitness[儿童]=>Apparel)[绩效激励]=>false[行动]=>SimpleXMLElement对象([行动]=>SimpleXMLElement对象([名称]=>Sale[类型]=>Sale[id]=>435[佣金]=>SimpleXMLElement对象([默认值]=>7.00%))[链接类型]=>SimpleXMLElement对象([链接类型]=>数组([0]=>文本链接[1]=>横幅[2]=>深度链接[3]=>高级链接)))

当我循环遍历这些数据时,我能够得到“language”元素的值,但是如果我试图得到“advertiser id”字段的值,我会得到错误“(!)注意:使用未定义的常量id-假定为“id”。我猜是破折号(-)由于我已成功显示语言元素的值,因此问题的原因是广告客户和id之间存在冲突。感谢您的帮助。

“广告客户id”由于破折号,因此不是有效标识符。PHP将破折号解释为减号,因此
$advertiser->advertiser id
被解析为
$advertiser->advertiser
减去名为
id
的常量


试着改用
$advertiser->{'advertiser-id'}
。这是访问名称不是有效标识符的属性的一种方法。

那一大团垃圾正是你从var_转储中得到的吗?检查HTML源代码;你应该会看到一个更容易阅读的版本。请不要使用
var_dump()
或类似于调试SimpleXML对象,因为它并不总是一个精确的表示。在这种情况下,最好的办法是粘贴到正在解析的实际XML中,然后人们可以根据需要重现问题。