Массив подобен
$a = array(1,2,3,4,5,6,7,8);
После этого на каждой итерации 3-й элемент следует удалить до тех пор, пока он не достигнет одного элемента
итерация будет чем-то вроде этого
индекс: 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 в качестве третьего элемента. Это продолжается до тех пор, пока не останется только один элемент.
вывод
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);
в<?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);
с<?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);
$ 3s теперь выглядит следующим образом:
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) [2] => Array ( [0] => 7 [1] => 8 ) )
Затем просто зациклируйте массив $ thirds и array_pop (), чтобы получить последнее значение.
Тем не менее, я не уверен, почему вы хотите получить 7 в конце, а не 8. Можете ли вы объяснить?