Php 将简单的html dom变量放入数组

Php 将简单的html dom变量放入数组,php,arrays,loops,foreach,simple-html-dom,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

我正在尝试使用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没有最好的理解,尤其是数组

$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);
对标题和价格数据也执行同样的操作

$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>';
对标题和价格数据也做同样的处理。

$array\u img=array();
$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>';
$array_title=array(); $array_price=array(); foreach($html->find('div.product')作为$results){ foreach($results->find('div.image')作为$img){ $array_img[]=$img; } foreach($results->find('a.title')作为$title){ $array_title[]=$title->纯文本; } foreach($results->find('div.price')作为$price){ $array_price[]=$price; } } 回声'; 打印($array\u img); 打印(数组标题); 打印(数组价格); 回声';
$array\u img=array();
$array_title=array();
$array_price=array();
foreach($html->find('div.product')作为$results){
foreach($results->find('div.image')作为$img){
$array_img[]=$img;
}
foreach($results->find('a.title')作为$title){
$array_title[]=$title->纯文本;
}
foreach($results->find('div.price')作为$price){
$array_price[]=$price;
}
}
回声';
打印($array\u img);
打印(数组标题);
打印(数组价格);
回声';

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

$priceList=$titleList=$imgList=array();
foreach($html->find('div.product')作为$results){
foreach($results->find('div.image')作为$img){
$imgList[]=$img;
}
foreach($results->find('a.title')作为$title){
标题列表[]=$title;
}
foreach($results->find('div.price')作为$price){
价格表[]=$price;
}
}
foreach($imgList作为$img){
echo$img;
}

等等…

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

$priceList=$titleList=$imgList=array();
foreach($html->find('div.product')作为$results){
foreach($results->find('div.image')作为$img){
$imgList[]=$img;
}
foreach($results->find('a.title')作为$title){
标题列表[]=$title;
}
foreach($results->find('div.price')作为$price){
价格表[]=$price;
}
}
foreach($imgList作为$img){
echo$img;
}


等等…

请提供一些要分析的示例html(参考),您确实意识到
$results->find
已经返回数组了,对吗?我使用的是:$html=file\u get\u html(');不,对不起,我没有。我以前从未在这个级别上使用过PHP,因此,如果这个问题被认为是愚蠢的,请道歉。请提供一些要解析的html示例(参考),您会意识到
$results->find
已经返回数组了,对吧?我使用的是:$html=file\u get\u html(');不,对不起,我没有。我以前从未在这个级别使用过PHP,所以如果这个问题被认为是愚蠢的,请道歉。谢谢你的回答。这将输出数百行类似于“array(15){[0]=>object(simple_html_dom_node){653(9){[“nodetype”]=>int(1)[“tag”]=>string(3)“div”的代码。有没有办法只显示图像?非常感谢。什么图像?您的find()没有查看图像,它正在查找带有css类“image”的div。如果有帮助,这就是我正在使用的html:$html=file\u get\u html('));是的,我知道,它会查找该div,然后提取该div中的任何内容,这就是本例中的实际图像。除非您获得的代码多于上面显示的代码,否则不会提取图像。它只会查找
并返回匹配的DOM节点。感谢您的回复。这会输出数百行类似的代码对于这个“数组(15){[0]=>object(simple_html_dom_node){653(9){[“nodetype”]=>int(1)[“tag”]=>string(3)“div””,有没有办法只显示图像?非常感谢。什么图像?你的find()不是在寻找图像,而是在寻找带有css类“image”的div。如果有帮助,这就是我使用的html:$html=file\u get_html('));是的,我知道,它会查找该div,然后拉出该div中的任何内容,这就是本例中的实际图像。除非您拥有的代码超过了上面显示的代码,否则它不会拉出图像。它只会查找
,并返回匹配的DOM节点。感谢您的回复。我可以使用此选项查看所需的数据,但是,它会返回数百行代码。是否只提取特定信息。如果有帮助,我将使用以下html:$html=file_get_html(');当我使用问题中的第一段代码时,我将获得产品的实际图像、标题和价格。然而,当我使用print\r($array\u img)时我收到了很多不需要的代码行,您必须使用键来获取您想要使用的特定于回声的信息,如
$array\u price[0]
查看php.net中的arrays manuel谢谢您的回复。我可以使用此选项查看我想要的数据,但是它会返回数百行代码。是否仍然只提取特定信息。如果有帮助,我使用此html:$html=file\u get\u html('));当我使用问题中的第一个代码块时,我会得到产品的实际图像、标题和价格。然而,当我使用print_r($array_img)时,我会得到很多不需要的代码行。你必须使用关键字来获取回声特定信息
$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/>