@art055

Простой способ получить новый массив?

Приветствую всем!
Предложите пож. вариант разделить на подмассивы ...
нужно на выходе получить $arr = [['1.',....],['2.',......],['3.',.....],[].....]
$arr = [

[0] => '1.';
[1] => 'email';
[2] => 'number';
[3] => 'addres';
[4] => '2.';
[5] => 'email';
[6] => 'number';
[7] => 'addres';
[8] => 'text';
[9] => '3.';
[10] => 'email';
[11] => 'number';
[12] => 'addres';
[13] => 'text';
[14] => '4.';
[15] => 'email';
[16] => 'number';
[17] => 'addres';
[18] => 'text';
[19] => '5.';
[20] => 'email';
[21] => 'number';
[22] => 'text';
[23] => 'регламент';
[24] => '6.';
[25] => 'email';
[26] => 'number';
[27] => 'addres';
[28] => 'text';
[29] => 'регламент';
[30] => '7.';
[31] => 'email';
[32] => 'number';
[33] => 'addres';
[34] => 'регламент';
[35] => '8.';
[36] => 'email';
[37] => 'number';
[38] => 'text';

]
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
nskarl
@nskarl
Вообще дизайнер
$i = 0;
$newarray = [];
$arr = ['1.', 'email', 'number', '2.', 'email', 'number', '3.', 'email', 'number'];

foreach($arr as $val) {
  if((($i + 1) . '.') == $val) $i++;
  $newarray[$i][] = $val;
}

print_r($newarray);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F
$newArr = array_reduce($arr, function($acc, $n) {
  if (preg_match('/^\d+\.$/', $n)) {
    $acc[] = [];
  }
  $acc[count($acc) - 1][] = $n;
  return $acc;
}, []);
Ответ написан
Комментировать
VladimirAndreev
@VladimirAndreev
php web dev
array_merge(...$raw)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы