PHP простой HTML возвращаемый массив DOM?

Я пытаюсь создать приложение с использованием простого HTML-сценария DOM php, но в настоящее время я работаю с ним - надеюсь, вы поможете.

Цель состоит в том, чтобы прочитать номера продуктов из базы данных mySQL, объединить эти числа с константой URL, а затем проанализировать полученный веб-сайт для определенного класса. Результат должен быть выведен на экран.

Моя проблема в том, что скрипт возвращает только первый результат из массива функций, я пробовал несколько вещей, например, пытался вызвать $ values->children[4], но, похоже, ничего не помогло.

Когда я запускаю функцию get_prices_array() с помощью URL-адреса, он возвращает несколько результатов -> но когда я возвращаю это в цикле while, он возвращает только первый результат в массиве.

Вот мой код, надеюсь, вы можете указать мне в правильном направлении!

Спасибо!

<?php

include('simple_html_dom.php');

function get_prices_array($url) {

    $x = file_get_html($url);
    foreach ($x->find('span.price')as $dom) {
        $y = $dom->outertext;
        return $y;
    }
    $x->clear();
}

$con = mysqli_connect("localhost", "***", "***", "***");
// Check connection
if (mysqli_connect_errno()) {
     echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}

$result = mysqli_query($con, "SELECT * FROM articles");

while ($row = mysqli_fetch_array($result)) {
    $constant = '***';
    $prices = get_prices_array($constant . $row["product_number"]);
    echo $row["product_number"] . " - " . $prices . '<br />';
}

mysqli_close($con);
?>

// РЕДАКТИРОВАТЬ //

Я изменил функцию get_prices_array(), чтобы перебрать каждый класс цен диапазона и добавить результат в массив, после чего массив возвращается из функции. Первые 5 результатов из массива затем сохраняются в переменные и добавляются в возвращаемую строку. Спасибо за вашу помощь!

<?php

include('simple_html_dom.php');

function get_prices_array($url) {

$x = file_get_html($url);
$y = array();
foreach ($x->find('span.price')as $dom) {
    $x = ($dom->outertext);
    $y[] = $x;
}
return $y;
//$x->clear();
}

$con = mysqli_connect("localhost", "***", "***", "***");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}

$result = mysqli_query($con, "SELECT * FROM articles");

while ($row = mysqli_fetch_array($result)) {
$constant = '***';
$prices = get_prices_array($constant . $row["product_number"]);
$pos1 = $prices[0];
$pos2 = $prices[1];
$pos3 = $prices[2];
$pos4 = $prices[3];
$pos5 = $prices[4];
echo $row["product_number"] . " - " . $pos1 . " - " . $pos2 . " - " . $pos3 . " - " .   $pos4 . " - " . $pos5 .'<br />';
}

mysqli_close($con);
?>

1 ответ

Я думаю, что проблема из-за возврата, используемого в цикле foreach функции get_prices_array($url).

он выполняет цикл foreach только один раз. Цикл не имеет смысла, если вы возвращаетесь без условия внутри цикла.

Другие вопросы по тегам