首页 > 解决方案 > PHP $xpath->查询循环

问题描述

我想用 $xpath->query 执行一个 for 循环,但它似乎在某些时候失败了。请我需要一些指导。

这是我尝试循环

for($i=1 ; $i<8 ;$i++)
{
    for($j=1 ; $j<24 ;$j++)
    $status[] = $xpath->query('//div[@class="datatable"]/table//tbody/tr[$i]/td[$j]/text()');
}

foreach($status as $xpathElement)
{    
    foreach($xpathElement as $nodeKey=>$nodeValue)
    {       
        $arr[] = $nodeValue->textContent;       
    }
}

标签: phpdom

解决方案


因为您使用的是单引号,所以生成的查询字符串看起来完全像这样(使用$i$j作为字符串插入)//div[@class="datatable"]/table//tbody/tr[$i]/td[$j]/text():。

要实际插入数字(存储在$i$j变量中),请使用双引号: $xpath->query("//div[@class=\"datatable\"]/table//tbody/tr[$i]/td[$j]/text()");.

或者如果你仍然想使用单引号,你可以这样写:

$xpath
  ->query('//div[@class="datatable"]/table//tbody/tr[' . $i . ']/td[' . $j . ']/text()');

推荐阅读