将simple_html_dom变量放入数组中

时间:2012-01-31 14:22:36

标签: php arrays loops foreach simple-html-dom

我正在尝试使用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 个答案:

答案 0 :(得分: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>';

答案 1 :(得分: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);

同样对标题和价格数据也这样做。

答案 2 :(得分: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);

答案 3 :(得分: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/>

等等......