Массив такой
$a = array(1,2,3,4,5,6,7,8);
После этого в каждой итерации третий элемент должен быть удален, пока он не достигнет одного элемента.
итерация будет примерно такой
индекс: 0 1 2 3 4 5 6 7
значение: 1 2 3 4 5 6 7 8
это нормальный
индекс: 0 1 2 3 4 5 6 7
значение: 1 2 4 5 7 8
здесь 3 и 6 удалены, как они вышли в качестве 3-х элементов
затем после удаления 6 он должен считать 7 и 8 как 1-й и 2-й и перейти к значению 1, которое составляет 1 как 3-й элемент. Это продолжается до тех пор, пока не останется только один элемент.
выход
12345678
1245678
124578
24578
2478
478
47
7
7 является оставшимся элементом
Вот код, надеюсь, это поможет.
<?php
$array = [1,2, 3,4,5,6,7,8];
function removeAtNth($array, $nth)
{
$step = $nth - 1; //gaps between operations
$benchmark = 0;
while(isset($array[1]))
{
$benchmark += $step;
$benchmark = $benchmark > count($array) -1 ? $benchmark % count($array) : $benchmark;
echo $benchmark."\n";
unset($array[$benchmark]);
$array = array_values($array);
echo implode('', $array)."\n";
}
}
removeAtNth($array, 3);
результат:
kris-roofe@krisroofe-Rev-station:~$ php test.php
1245678
124578
24578
2478
478
47
7
Вы ищете array_chunk ()
$a = array(1,2,3,4,5,6,7,8);
$thirds = array_chunk($a, 3);
$ трети сейчас это как:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
)
)
Затем просто переберите массив $ трети и array_pop () чтобы захватить последнее значение.
Однако я не уверен, почему вы хотите получить 7 в конце, а не 8. Вы можете объяснить?