Как красиво разбить массив на PHP?
$out = [1, 2, 3, 4, 5, 6, 7, 8];
Нужно получить на выходе: 1 5 2 6 3 7 4 8 По логике, делим массив на 2 части, и после первого элемента добавляем второй из другого массива.
Внутри массива не только числа, к числам не нужно привязываться. Как красиво это сделать?
Красивее чем:
$out = array_chunk($out, ceil(count($out)/2));
$new = [];
for($i=0; $i<=count($out[0]);$i++){
$new[] = $out[0][$i];
if(!empty($out[1][$i]))
$new[]=$out[1][$i];
}
Ответы (2 шт):
Автор решения: Виктор Карев
→ Ссылка
$out = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$c = ceil(count($out)/2);
$new = [];
for($i = 0, $i1 = $c; $i < $c; $i++, $i1++){
$new[] = $out[$i];
if (isset($out[$i1])) {
$new[] = $out[$i1];
}
}
print_r($new);
Автор решения: teran
→ Ссылка
даешь однострок
$data = [1,2,3,4,5,6,7,8];
$result = array_merge(...array_map(null, ...array_chunk($data, ceil(count($data)/2))));
с нечетным количеством элементов, так хорошо, конечно, не получается, но все же