本质上,我试图从几个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的答案。
我看到你的代码有几个问题:
- $test未初始化
- if($category_title)仅检查值是否存在。它不是可迭代的。您可能想要使用is_array()
- 您的第一个foreach循环不使用要迭代的项(缺少as$value部分)。请参阅PHP doc:foreach(array_expression为$value)语句
- continue是一个关键字,而不是一个函数,所以省略(),同时查找PHP文档
通常,您可能想要查询$xpath->query('//*[@id="shopMain"]/div/div');然后进行子查询。