Php 用于显示2组数据的Foreach循环配置
我使用简单的HTMLDOM从返回结果页面的网页中获取数据。我想把它格式化为标题,然后是描述。现在我正在使用以下代码:Php 用于显示2组数据的Foreach循环配置,php,loops,foreach,format,Php,Loops,Foreach,Format,我使用简单的HTMLDOM从返回结果页面的网页中获取数据。我想把它格式化为标题,然后是描述。现在我正在使用以下代码: <?php include('simple_html_dom.php'); $html = file_get_html('https://www.example.com?q=randomquery'); foreach($html->find('div#resultscontainer') as $data) //for each title foreach($d
<?php
include('simple_html_dom.php');
$html = file_get_html('https://www.example.com?q=randomquery');
foreach($html->find('div#resultscontainer') as $data)
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($data->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title;
echo $desc;
echo "</div>";
}
}
?>
第二个foreach检查完整的HTML文件,而不是$title下面的内容 你应该这样做:
<?php
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($title->parent->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title->plaintext;
echo $desc->plaintext;
echo "</div>";
}
}
foreach($html->find('div#resultscontainer') as $data) {
$titlesAndDescriptions = array();
// for each title
foreach($data->find('h3') as $key => $title) {
$titlesAndDescriptions[$key] = array('title' => $title);
}
// for each description
foreach($data->find('span.st') as $key => $desc) {
$titlesAndDescriptions[$key]['description'] = $desc;
}
foreach ($titlesAndDescriptions as $titleAndDescription) {
echo "<div class='result'>";
echo $titleAndDescription['title'];
echo $titleAndDescription['description'];
echo "</div>";
}
}
像这样尝试:
<?php
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($title->parent->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title->plaintext;
echo $desc->plaintext;
echo "</div>";
}
}
foreach($html->find('div#resultscontainer') as $data) {
$titlesAndDescriptions = array();
// for each title
foreach($data->find('h3') as $key => $title) {
$titlesAndDescriptions[$key] = array('title' => $title);
}
// for each description
foreach($data->find('span.st') as $key => $desc) {
$titlesAndDescriptions[$key]['description'] = $desc;
}
foreach ($titlesAndDescriptions as $titleAndDescription) {
echo "<div class='result'>";
echo $titleAndDescription['title'];
echo $titleAndDescription['description'];
echo "</div>";
}
}
foreach($html->find('div#resultcontainer')作为$data){
$titlesAndDescriptions=array();
//每个标题
foreach($data->find('h3')作为$key=>$title){
$titlesAndDescriptions[$key]=数组('title'=>$title);
}
//每种描述
foreach($data->find('span.st')作为$key=>$desc){
$titlesAndDescriptions[$key]['description']=$desc;
}
foreach($titleAndDescriptions作为$titleAndDescription){
回声“;
echo$titleAndDescription['title'];
echo$titleAndDescription['description'];
回声“;
}
}
您应该至少添加有问题的标记,或者添加live url(如果可以的话),没有人会发现这段代码有什么问题code@Ghost我正在从谷歌获取结果。获取数据并不难,我在获取数据后遇到格式化问题。最后一个foreach
应该在第二个之外。@MateiMihai这不起作用,因为顶部会有一大块标题,而描述仍然在底部。我想问的是如何将标题与描述按顺序匹配。谢谢。我更喜欢这个答案,因为它允许我更容易地扩展我想要分离的数据。