Попытка отобразить все int, которых нет в таблице MySQL, с помощью переполнения стека

Я довольно новичок во всем этом программировании. Мне нужно вывести любое целое число из базы данных MySQL, которая отсутствует (в хронологическом порядке). Таким образом, эта строка $ row [«Statement»] имеет целые числа, начиная с 114 и заканчивая 44714. В этом списке отсутствуют числа, и мне нужно знать, какие из них. Первое число, которое отсутствует, это 118. Таким образом, это идет 114, 115, 116, 117, 120, …

Я хочу повторить 118, 119 и любые другие пропущенные в этой строке $ [«Statement»].

То, что я здесь, просто печатает до тех пор, пока не пропадет один, поэтому «114 115 116 117».

<?php
$link = mysqli_connect("localhost", "root", "password", "DB")or die("Error " . mysqli_error($link));

$query = "SELECT statement FROM sales" or die ("Error in the consult.." . mysqli_error($link));
$result = $link->query($query);
$count = 114;

while($row = mysqli_fetch_array($result)) {
while ($row["statement"] == $count) {
echo $count . "<br>";
$count++;
}
}
?>

Я не могу думать, как сделать наоборот. Если бы я установил второе условие условно, чтобы проверить, если! ==, это просто распечатало бы весь список, включая отсутствующие и не пропущенные. то есть 114, 115, 116, 117, 118, 119, 120 …

Разве это вложение плохо? Должно ли это быть какое-то время? Если заявление? Я не понимаю логику. Пожалуйста, научи меня очень хорошо.

0

Решение

Вы можете упростить себе задачу, если создадите массив, а затем измените массив —

$count = 114;
$currentNumbers = array();
while($row = mysqli_fetch_array($result)) {
array_push($currentNumbers, $row['statement'];
}
$tempArray = range($count,max($number));
$missingNumbers = array_diff($tempArray,$CurrentNumbers);
foreach($missingNumber AS $value) {
echo $value . '<br />';
}

range()
array_diff()
ПРИМЕР

0

Другие решения

<?php
$link = mysqli_connect("localhost", "root", "password", "DB")or die("Error " . mysqli_error($link));

$query = "SELECT statement FROM sales" or die ("Error in the consult.." . mysqli_error($link));
$result = $link->query($query);
$count = 114;
$max = 44714;
$currentNumbers = array();
$numberOfMissing = 1;

while($row = mysqli_fetch_array($result)) {
array_push($currentNumbers, $row['statement']);
}

$tempArray = range($count, $max);
$missingNumbers = array_diff($tempArray, $currentNumbers);
foreach ($missingNumbers as $value) {
echo $numberOfMissing++ . ". " . $value . "<br>";
}
?>

Спасибо, Джей!

0