Php 使用while循环返回节点值
我使用xpath获取页面上的各种元素。如果我使用这样的foreach循环,Php 使用while循环返回节点值,php,Php,我使用xpath获取页面上的各种元素。如果我使用这样的foreach循环,foreach($company as$node){echo$node->nodeValue.“;}它可以工作,但我只能从一个变量返回值,这意味着我必须创建两个单独的foreach循环。我希望能够使用while循环,以便可以同时从变量返回两个值。while循环不返回任何错误或值 $doc = new DOMDocument(); @$doc->loadHTML($source); $xpath = new DOMXp
foreach($company as$node){echo$node->nodeValue.
“;}
它可以工作,但我只能从一个变量返回值,这意味着我必须创建两个单独的foreach循环。我希望能够使用while循环,以便可以同时从变量返回两个值。while循环不返回任何错误或值
$doc = new DOMDocument();
@$doc->loadHTML($source);
$xpath = new DOMXpath($doc);
$company = $xpath->query("//*[@class='name']");
$address = $xpath->query("//*[@class='address']");
$i = 0;
while ($i < count($company)) {
echo $company->nodeValue. "<br>";
echo $address->nodeValue. "<br><br>";
$i++;
}
$doc=newDOMDocument();
@$doc->loadHTML($source);
$xpath=新的DOMXpath($doc);
$company=$xpath->query(“/*[@class='name']”);
$address=$xpath->query(“/*[@class='address']”);
$i=0;
而($inodeValue.“
”;
echo$address->nodeValue。“
”;
$i++;
}
要通过索引检索单个节点,请使用
while($i<$company->length){
echo$company->item$i->nodeValue。“
”;
echo$address->item($i)->nodeValue。“
”;
$i++;
}
是,但这仅在地址节点列表中的项目数量相等或更多时才起作用。否则,您将得到错误。@Gordon我假设它们与OP代码的长度总是相等的。这里只是修复了一个简单的错误,没有提供更高级别的建议。@Esailija可以工作,但是对于count($company)
它只返回1,但应该有30个节点。有类似项目列表或节点列表的吗?所以我可以在上面使用count()。@Mr.1.0尝试而($i<$company->length)
您可能使用了错误的XPath。请提供您的HTML示例。
while ($i < $company->length ) {
echo $company->item($i)->nodeValue. "<br>";
echo $address->item($i)->nodeValue. "<br><br>";
$i++;
}