У меня есть массив чисел: 16,17,19,19,20. Мне нужно найти недостающее число/пробел (в данном случае это 18/одно число, но это могут быть два числа, например 16,17,20,21), а затем я хочу заполнить пробел таким образом, чтобы остальная часть массив перемещает один (x) номер вверх. Этот массив может иметь больше недостающих чисел (пробел), например. 16,17,19,19,20,21,23,23. У меня есть этот цикл, но есть проблема - см комментарий:найти пробел в массиве чисел и заполнить пробел - петля
<?php
$ar = array(16,17,19,19,20);
$action = false;
$new = array();
$temp = array();
foreach ($ar as $k => $v) {
if ($k == 0)
{
// case 0 - insert first value of var into array - never need to change
$new[] = $v;
}
elseif ($k > 0)
{
if (end($new) + 1 == $v)
{
// case 1 - numbers are consequence/no gap - insert into array - no change
$new[] = $v;
}
elseif (end($new) + 1 != $v)
{
// case 2 - there is a gap: find the size of the gap (1,2,x) and then subtract all next values of array with the gap
$gap = $v - end($new) - 1 ; // find value of the gap
//echo "<br> gap is: " . $gap; // PROBLEM - gap get increased by every loop but i need to keep gap size static and process rest of the array
$action = true;
if ($action = true)
{
$temp[] = $v - $gap;
}
}
}
}
echo "<br>";
print_r ($new);
echo "<br>";
print_r ($temp);
поэтому результат: массив новый нормально
Array ([0] => 16 [1] => 17)
температура массива не в порядке
Array ([0] => 18 [1] => 18 [2] => 18)
его должно быть 18,18,19
Как этот сценарий рассматривается? Спасибо.
Я решил это некоторое время назад, поэтому мне нужно будет обновить мою память. – phpJs