Как удалить каждый третий элемент в php-массиве до тех пор, пока останется только один элемент и не напечатает этот элемент?

Массив подобен

$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. Можете ли вы объяснить?