PHP:嵌套foreach循环的问题


PHP: Issue with nested foreach loops

本质上,我试图从几个xPath查询中提取数据,并将从中的每个文件中提取的数据提交到CSV中的一行。我遇到的问题是在特定的xPath查询中循环,并将其结果连接到一行中。

我有以下代码:

$category_titles = $xpath->query('//*[@id="shopMain"]/div/div/h1');
$category_introduction = $xpath->query('//*[@id="shopMain"]/div/div/p'); 
if($category_title){
  foreach($category_title){
        foreach($category_introduction as $node){
            $test .= $node->nodeValue;
            var_dump($test);
            continue();
         }  
            $test = '':
     }  
}

我试图为每个$category_title循环$category_introduction查询,并连接每个<p>元素。然后,当所有<p>标签都已连接时,我试图打破循环,并仅在清除$test的情况下重复该过程。有人能建议我如何在嵌套的foreach循环中做到这一点吗?我从来没有写过嵌套循环,现在很挣扎。

我认为问题在于if条件和foreach循环,因为在if条件和foreach循环中,您声明了错误的变量

试试这个

if($category_titles) 

foreach($category_titles)

代替

if($category_title)

foreach($category_title)

除了Umesh Chauhans的答案。

我看到你的代码有几个问题:

  1. $test未初始化
  2. if($category_title)仅检查值是否存在。它不是可迭代的。您可能想要使用is_array()
  3. 您的第一个foreach循环不使用要迭代的项(缺少as$value部分)。请参阅PHP doc:foreach(array_expression为$value)语句
  4. continue是一个关键字,而不是一个函数,所以省略(),同时查找PHP文档

通常,您可能想要查询$xpath->query('//*[@id="shopMain"]/div/div');然后进行子查询。