Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在foreach中插入xpath的动态变量_Php_Xml_Simplexml - Fatal编程技术网

Php 在foreach中插入xpath的动态变量

Php 在foreach中插入xpath的动态变量,php,xml,simplexml,Php,Xml,Simplexml,xpath是否可以在foreach中获取动态值 p、 e 我尝试了下面的代码,得到了:尝试获取非对象错误的属性 foreach ($srcov as $src) { $qCoverXml = $coverXml->xpath('//cover/code[.= "'. $srcC->Code .'" ]/parent::*'); echo $qCoverXml->name; } 我做错了什么; 非常感谢您引用simplexml文档: 返回SimpleXMLEl

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

p、 e 我尝试了下面的代码,得到了:尝试获取非对象错误的属性

foreach ($srcov as $src) {
   $qCoverXml = $coverXml->xpath('//cover/code[.= "'.  $srcC->Code  .'" ]/parent::*');
   echo  $qCoverXml->name;
}
我做错了什么;
非常感谢您引用simplexml文档:

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

所以,有两件事你做错了

  • 您应该检查错误案例
  • 您应该将结果视为数组
  • 它看起来像这样:

    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";
    }
    

    你为什么不试试呢?是的,这是可能的,这就是你想知道的?好的。很抱歉,我会再试一次:)我使用上面的代码,并且我尝试获取非对象错误的属性,如果我在foreach循环之外使用此代码,它就可以正常工作。在哪一行中,您会得到该错误?可能
    $coverXml
    $srcC
    不是对象。或者,
    $qCoverXml
    不是对象。错误是foreach的最后一行($qCoverXml->name;)我在foreach循环之外使用此代码它工作正常谢谢JimiDini你是对的我没有将结果视为ar数组,现在它工作得很好,谢谢