Задать вопрос
@sz9

Как отделить каждый 4-ый элемент массива?

$_array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

Добрый вечер. Есть массив, и нужно вывести в вот таком вот порядке числа:
1 5 9
2 6 10
3 7 11
4 8 12

и т.д. То есть получается, после каждого четвертого элемента поставить < br/ >.
Большое спасибо.
  • Вопрос задан
  • 10660 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
rdifb0
@rdifb0
Программист, реалист
array_chunk разобьет массив на части, все остальное уже зависит от способа вывода значений.

$array = array();
for($i = 1; $i <= 20; $i++) {
	$array[] = sprintf('%02d', $i);
}

$n = 4;
$chunks = array_chunk($array, $n);

$chunks_r = array();
foreach ($chunks as $i=>$chunk) {
	foreach ($chunk as $j=>$el) {
		$chunks_r[$j][$i] = $el;
	}
}

header('Content-Type: text/plain'); 

foreach ($chunks_r as $chunk) {
	foreach ($chunk as $el) {
		echo $el, ' ';
	}
	echo PHP_EOL;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@traims
Очевидно-школьное решение.

<?php 
for ($times=0; $times<4; $times++)
{ 
  for ($element=$times+1; $element<20; $element+=4)
  {
    echo " $element ";    
  } 
  echo "<br>";
}  
?>


Выводит текст:
1 5 9 13 17 
2 6 10 14 18 
3 7 11 15 19 
4 8 12 16
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Решение в лоб. Выведет вам любой массив в 4 ряда и n колонок.

для php 5.5+
$arr = range(1, 25);

$chunks = array_chunk($arr, 4);
$rows = array_map(function ($idx) use ($chunks) {
    return array_column($chunks, $idx);
}, range(0, 3));

echo implode("<br />", array_map(function ($row){
    return implode(', ', $row);
}, $rows));

echo "\n\n";


для php 5.3+
$arr = range(1, 25);

$chunks = array_chunk($arr, 4);
$rows = array_map(function ($idx) use ($chunks) {
    // fallback, так как array_column появился только в 5,5+
    return array_reduce($chunks, function ($column, $chunk) use ($idx) {
        if (!isset($chunk[$idx])) return $column;
	    array_push($column, $chunk[$idx]);
	    return $column;
    }, array());
}, range(0, 3));

echo implode("<br />", array_map(function ($row){
    return implode(', ', $row);
}, $rows));
Ответ написан
Комментировать
jone21
@jone21
Кратко не получится
не проще ли проверять деленее нацело ?)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽