Задать вопрос
Kadi
@Kadi
веб-разработчик

Как разбить многомерный массив на множество одномерных?

В общем, на входе получаю массив такого вида
Array (
  [0] => Array (
      [0] => Вася
      [1] => Петя
      [2] => Саня
  )
  [1] => Array (
      [0] => 16
      [1] => 25
      [2] => 55
  )
  [2] => Array (
      [0] => школьник
      [1] => программист
      [2] => инженер
  )
)


причем неизвестно сколько элементов они будут содержать (сейчас в примере три, а может быть больше)
нужно получить массивы такого вида

Array (
  [0] => Вася
  [1] => 16
  [2] => школьник
)
Array (
  [0] => Петя
  [1] => 25
  [2] => программист
)
Array (
  [0] => Саня
  [1] => 55
  [2] => инженер
)
  • Вопрос задан
  • 9163 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
irostovtsev
@irostovtsev
Просто попробуйте сохранить подмассивы, используя переменные переменных.

Ваш массив:

$arrays = Array (
  '0' => Array (
      '0' => 'Вася',
      '1' => 'Петя',
      '2' => 'Саня'
  ),
  '1' => Array (
      '0' => '16',
      '1' => '25',
      '2' => '55'
  ),
  '2' => Array (
      '0' => 'школьник',
      '1' => 'программист',
      '2' => 'инженер'
  )
);


Код цикла:
foreach ($arrays as $i =>$array) {
    ${"array{$i}"} = $array; 
}


Как результат, в данном случае сформируются 3 переменные: $array0, $array1, $array2, которые и будут содержать Ваши подмассивы изначального многомерного массива.

Результат:

Array
(
    [0] => Вася
    [1] => Петя
    [2] => Саня
)
Array
(
    [0] => 16
    [1] => 25
    [2] => 55
)
Array
(
    [0] => школьник
    [1] => программист
    [2] => инженер
)


Пример онлайн
Ответ написан
Kadi
@Kadi Автор вопроса
веб-разработчик
итак, вот исходный массив
$arrays = Array (
  '0' => Array (
      '0' => 'Вася',
      '1' => 'Петя',
      '2' => 'Саня'
  ),
  '1' => Array (
      '0' => '16',
      '1' => '25',
      '2' => '55'
  ),
  '2' => Array (
      '0' => 'школьник',
      '1' => 'программист',
      '2' => 'инженер'
  )
);


Решение:
foreach ($arrays as $array) {
    foreach ($array as $j => $val) {
		${"array{$j}"}[] = $val;
	}
}


и соответственно, получаем $array0, $array1, $array2 с соответствующим содержанием
Array (
  [0] => Вася
  [1] => 16
  [2] => школьник
)
Array (
  [0] => Петя
  [1] => 25
  [2] => программист
)
Array (
  [0] => Саня
  [1] => 55
  [2] => инженер
)


спасибо irostovtsev за наводку )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@jlgfmhldf
Перезаписать с помощью цикла в отдельные массивы.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы