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

时间:2014-12-19 20:36:10

标签: php mysql conditional

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

我想回复118,119,以及此$行["声明"]中的任何其他缺失。

我所拥有的只是打印,直到缺少一个,所以" 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 ......

嵌套这些不好吗?应该是吗?如果声明?我没有得到逻辑。请真正了解我。

2 个答案:

答案 0 :(得分: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() EXAMPLE

答案 1 :(得分: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>";
  }
?>

谢谢Jay!