PHP:嵌套的foreach循环问题

时间:2015-12-02 11:05:29

标签: php xpath php-5.5

基本上我正在尝试从多个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_introduction循环$category_title查询并连接每个<p>元素。然后我尝试在连接所有<p>标记时跳出循环,并仅在$test清除后重复该过程。任何人都可以建议我如何在嵌套的foreach循环中执行此操作?我从来没有写过嵌套循环,而且还在苦苦挣扎。

2 个答案:

答案 0 :(得分:0)

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

试试这个

if($category_titles) 

foreach($category_titles)

而不是

if($category_title)

foreach($category_title)

答案 1 :(得分:0)

除了Umesh Chauhans的回答。

我发现您的代码有几个问题:

  1. $ test未初始化。
  2. if($ category_title)仅检查值是否存在。不是它可以迭代。您可能想要使用is_array()。
  3. 您的第一个foreach循环不使用要迭代的项目(缺少$ value部分)。 请参阅PHP doc:foreach(array_expression as $ value)语句;
  4. continue是关键字而不是函数,所以省略(),查找PHP文档
  5. 一般情况下,您可能需要查询$ xpath-&gt;查询(&#39; // * [@ id =&#34; shopMain&#34;] / div / div&#39;);然后做子查询。