【问题标题】:PHP: Issue with nested foreach loopsPHP:嵌套 foreach 循环的问题
【发布时间】:2015-12-02 11:05:28
【问题描述】:

基本上,我正在尝试从多个 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 循环中执行此操作?我从来没有写过嵌套循环,现在很挣扎。

【问题讨论】:

    标签: php xpath php-5.5


    【解决方案1】:

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

    试试这个

    if($category_titles) 
    

    foreach($category_titles)
    

    代替

    if($category_title)
    

    foreach($category_title)
    

    【讨论】:

      【解决方案2】:

      除了 Umesh Chauhans 的回答。

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

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

      一般你可能想查询 $xpath->query('//*[@id="shopMain"]/div/div');然后做子查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2014-05-18
        • 2015-07-06
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        相关资源
        最近更新 更多