1

我正在尝试使用 simple_html_dom 从网站中提取一些信息。

目前我正在使用:

foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        echo $img;
    }
    foreach ($results->find('a.title') as $title) {
        echo $title->plaintext;
    }
    foreach ($results->find('div.price') as $price) {
        echo $price;
    }
}

哪个工作正常。但是,我需要能够在 foreach 循环之外回显每个变量。如果我使用上面的代码这样做,则只会显示最终结果,即在我尝试提取的 10 个产品中,只会显示第 10 个。

有没有一种方法可以使用数组来存储每个 foreach 循环的所有结果,然后在整个循环完成后将它们回显出来?

像这样的东西:

foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        array($img);
    }
    foreach ($results->find('a.title') as $title) {
        array($title->plaintext);
    }
    foreach ($results->find('div.price') as $price) {
        array($price);
    }
}
echo array($img);
echo array($title);
echo array($price);

抱歉,如果这个问题令人困惑,我对 PHP 没有最好的掌握,尤其是数组!

4

4 回答 4

3
$array_img = array();
$array_title = array();
$array_price = array();
foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        $array_img[] = $img;
    }
    foreach ($results->find('a.title') as $title) {
        $array_title[]= $title->plaintext;
    }
    foreach ($results->find('div.price') as $price) {
        $array_price[]= $price;
    }
}
echo '<pre>';
print_r($array_img);
print_r($array_title);
print_r($array_price);
echo '</pre>';
于 2012-01-31T14:27:12.703 回答
1
$images = array();
foreach ($html->find('div.product') as $results) {
    foreach ($results->find('div.image') as $img) {
        $images[] = $img; // append $img to the $images array
    }
}

var_dump($images);

对标题和价格数据也执行相同的操作。

于 2012-01-31T14:25:18.960 回答
1
$img = array();
$title = array();
$price = array();
foreach ($html->find('div.product') as $results) {
    $img[] = $results->find('div.image');
    $title[] = $results->find('a.title');
    $price[] = $results->find('div.price');
}

print_r($img);
print_r($title);
print_r($price);
于 2012-01-31T14:29:04.570 回答
0

不确定我是否完全理解您的问题,请尝试以下操作。

$priceList = $titleList = $imgList = array();

foreach ($html->find('div.product') as $results) {<br/>
    foreach ($results->find('div.image') as $img) {<br/>
        $imgList[] = $img;<br/>
    }<br/>
    foreach ($results->find('a.title') as $title) {<br/>
        titleList[] = $title;<br/>
    }<br/>
    foreach ($results->find('div.price') as $price) {<br/>
        priceList[] = $price;<br/>
    }<br/>
}<br/>
foreach ($imgList as $img) {<br/>
        echo $img;<br/>
}<br/>

等等...

于 2012-01-31T14:34:35.723 回答