2015-12-02 156 views
1

基本上我试图从几个XPath查询中提取数据,并在一个CSV提交的每一个文件拉到数据到行。我遇到的问题是循环访问特定的xPath查询并将其结果连接到一行。PHP:问题与嵌套的foreach循环

我有以下代码:

$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循环中做到这一点?我从来没有写过一个嵌套循环,并且挣扎着。

回答

0

我认为这个问题是如果条件和foreach循环,因为如果条件和foreach循环您已声明不对变量

试试这个

if($category_titles) 

foreach($category_titles) 

代替

if($category_title) 

foreach($category_title) 
0

除了Umesh制作Chauhans答案。

我看到一些问题与您的代码:

  1. $测试未初始化。
  2. if($ category_title)只检查值的存在。不是为了迭代。你可能想要使用is_array()。
  3. 您的第一个foreach循环不使用该项目进行迭代(缺少$ value部分)。 请参阅PHP文档:foreach(array_expression为$ value)语句;
  4. 继续是一个关键字不是函数,所以省略了(),查找PHP的文档以及

一般来说,你可能想查询$ xpath->查询('// * [@ ID = “shopMain”]/DIV/DIV');然后做子查询。