За последние 24 часа нас посетили 18818 программистов и 1627 роботов. Сейчас ищут 947 программистов ...

создать одномерный массив из многомерного массива

Тема в разделе "PHP для новичков", создана пользователем sey, 15 окт 2008.

  1. sey

    sey Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    одномерный состоит только значений с многомерного. прошу помогите.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Наверное в цикле забивать данные в одномерный массив.
     
  3. sey

    sey Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    да. просто не известно массив сколько мерный, нужно универсальная функция.
     
  4. sey

    sey Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    прошу. очень нужно.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. /* Функция получения плоского массива */
    3. function flat_array($array) {
    4.     foreach ($array as $value) {
    5.         if(is_array($value)) {
    6.             $result=array_merge($result,flat_array($value));
    7.         }
    8.         else
    9.         {
    10.             $result[]=$value;
    11.         }
    12.     }
    13.     return $result;
    14. }
    15.  
    16. /* Тест */
    17. $array_test=array(1,2,3,array(4,5,6,array(7,8,9),10,11),12,13,array(14,15),16,17,18);
    18. echo '<pre>Исходный:<br>';
    19. print_r($array_test);
    20. echo '<br>Результат:<br>';
    21. print_r(flat_array($array_test));
    22. ?>
     
  6. sey

    sey Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    32
    Симпатии:
    0
    спс [vs].
    если правильно понял, здесь $result=array_merge($result,flat_array($value)) функция вызывает себя?
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    sey
    Да. Функцию можно вызывать сразу после объявления, даже из себя.