在 foreach 中插入 xpath 的动态变量


Insert dynamic variable for xpath inside foreach

xpath是否可以在foreach中获取动态值;

体育我尝试使用下面的代码,我得到: 试图获取非对象错误的属性

foreach ($srcov as $src) {
   $qCoverXml = $coverXml->xpath('//cover/code[.= "'.  $srcC->Code  .'" ]/parent::*');
   echo  $qCoverXml->name;
}

我做错了什么;谢谢

好吧,引用 xpath() 方法的 simplexml 文档:

返回 SimpleXMLElement 对象的数组,如果出现错误,则返回 FALSE。

所以,有两件事你做错了。

  1. 您应该检查错误情况
  2. 您应该将结果视为数组

它将看起来像这样:

foreach ($srcov as $src) {
    $qCoverXml = $coverXml->xpath('//cover/code[.= "'.  $srcC->Code  .'" ]/parent::*');
    if (false === $qCoverXml) {
        echo "ERROR: request for {$srcC->Code} failed somehow'n";
        continue;
    }
    if (count($qCoverXml) == 0) {
        echo "ERROR: request for {$srcC->Code} didn't return any elements'n";
        continue;
    }
    echo  $qCoverXml[0]->name."'n";
}