尝试使用 php 回显出不在 mysql 表中的每个 int


Trying to echo out every int that isn't in mysql table with php

我对整个编程内容都很陌生。我需要从 mysql 数据库中回显出缺少的任何整数(按时间顺序(。所以这个 $row["语句"] 的整数从 114 开始到 44714。此列表中缺少数字,我需要知道哪些数字。缺少的第一个数字是 118。所以它变成了 114, 115, 116, 117, 120, ...

我想呼应 118、119 和这个$row["语句"]中缺少的任何其他内容。

我在这里的东西只是打印,直到缺少一个,所以"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...

这些时间嵌套不好吗?应该做一会儿吗?如果声明?我不明白逻辑。请学习我真正的好。

如果创建一个数组然后比较数组,您可以自己变得容易 -

$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()

<?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>";
  }
?>

谢谢周杰伦!