Помещение переменных simple_html_dom в массив - PullRequest
1 голос
/ 31 января 2012

Я пытаюсь извлечь некоторую информацию с веб-сайта, используя 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 ]

3 голосов
/ 31 января 2012
<code>$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 '
';
1 голос
/ 31 января 2012
$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);
1 голос
/ 31 января 2012
$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);

Сделайте то же самое для данных названия и цены.

0 голосов
/ 31 января 2012

Не уверен, что я полностью понимаю ваш вопрос, попробуйте следующее.

$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/>

И так далее ...

...