@Dizzy221
PHP Программист

Как узнать пропущенные элементы массива?

Есть массив вида:
array(3000) {
  [0]=>
  int(3000)
  [1]=>
  int(2999)
  [2]=>
  int(2998)
  [3]=>
  int(2997)
  .....
}


То есть на выходе получается список чисел по порядку от большего к меньшему, с шагом в еденицу
Как узнать пропущенные цифры (их может быть несколько подряд) и записать их в отдельный массив?
  • Вопрос задан
  • 485 просмотров
Решения вопроса 1
bigton
@bigton
Web-программист
$array = [...]; // ваш исходный массив

$array_full = range(min($array), max($array)); // эталонный массив

$array_diff = array_diff($array_full, $array); // пропущенные значения
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Siverius
$myArray = [];
for($i = 0; $i < 3000; $i++){
    if(!isset($array[$i])) {
        $myArray[] = $i;
    }
}
Ответ написан
0xD34F
@0xD34F
$missed = array_diff(range($arr[0], $arr[count($arr) - 1], -1), $arr);
Ответ написан
Комментировать
@Kerm
foreach ($array as $key => $value) {
    $value = trim($value);
    if (empty($value))
        echo "$key empty <br/>";
    else
        echo "$key not empty <br/>";
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы