Blog. Just Blog

Преобразование многомерного массива в одномерный на PHP

02.11.2021 | Категория: Web-мастеру и не только | Автор: ManHunter
Как гласит японская мудрость: "Даже если меч понадобится один раз в жизни, носить его нужно всегда". Следующий трюк как раз из этой серии. А именно, преобразование многомерного массива в одномерный.

Делается все при помощи стандартного класса RecursiveIteratorIterator, который берет на себя извлечение данных из многомерного массива, и функции iterator_to_array, которая преобразует эти данные в одномерный массив. Код будет выглядеть следующим образом:
  1. // Исходный многомерный массив
  2. $multi_array=array(
  3.     array('first',1,2,3),
  4.         'A'=>array(
  5.             'ZYXEL'=>array('banana','apple',7,'gnome'),
  6.             7=>array('a','b','c'),
  7.             'ROBOTIX'=>array('2400','3200','8000'),
  8.         ),
  9.     'INTEL' => array(
  10.         0=>array(8,'AMD'),
  11.         1=>array(
  12.             'groups' => array(
  13.                 array('metallica','accept','kiss'),
  14.                 'kurt'
  15.             )
  16.         )
  17.     )
  18. );
  19.  
  20. $iterator=new RecursiveIteratorIterator(new RecursiveArrayIterator($multi_array));
  21. $one_array=iterator_to_array($iteratorfalse);
  22. print_r($one_array);
На входе многомерный массив с совершенно разнобойными элементами и ключами. На выходе получаем одномерный массив, включающий в себя все элементы многомерного массива.

Array
(
    [0] => first
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => banana
    [5] => apple
    [6] => 7
    [7] => gnome
    [8] => a
    [9] => b
    [10] => c
    [11] => 2400
    [12] => 3200
    [13] => 8000
    [14] => 8
    [15] => AMD
    [16] => metallica
    [17] => accept
    [18] => kiss
    [19] => kurt
)

На моей многолетней практике такая задача возникала всего один раз. Если вам когда-нибудь пригодится мое решение, то буду только рад.

Просмотров: 125 | Комментариев: 0

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.09 сек. / MySQL: 1 (0.014 сек.) / Память: 4.75 Mb
Наверх