Из многомерного массива в одномерный. php

412
29 августа 2017, 13:20

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

К примеру, есть массив:

$arrayTest = [
        'country' => [
            'Russian Federation' => [
                'Округа' => [
                    'Краснодарский край',
                    'Чеченская республика',
                    'Республика Дагестан'
                ],
                'Москва', 
                'Воронеж', 
                'Ростов-на-Дону'
            ],
            "United States of America" => [
                'Сиэтл', 
                'Вашингтон', 
                'Филадельфия'
            ],
            "China" => [
                'Шанхай', 
                'Пекин', 
                'Гон'
            ]
        ],
        'union' => [
            'СССР', 
            'Европейский союз'
        ], 
        'status' => 1, 
        'age' => 34
    ];

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

array(
    Краснодарский край
    Чеченская республика
    Республика Дагестан
    Москва
    Воронеж
    Ростов-на-Дону
    Сиэтл
    Вашингтон
    Филадельфия
    Шанхай
    Пекин
    Гон
    СССР
    Европейский союз
    1
    34
)
Answer 1

Можно использовать функцию array_walk_recursive, которая рекурсивно применяет пользовательскую функцию к каждому элементу массива

$result = [];
array_walk_recursive($arrayTest, function ($item, $key) use (&$result) {
    $result[] = $item;    
});
Answer 2
  1. Цикл по массиву
  2. Если элемент не массив - складываем в результат
  3. Если элемент массив, делаем пункт 1 и объединениям с результатом.

Лучше всего написать функцию и использовать рекурсию.

Answer 3

Кажется я понял и написал работающую функцию:

$resArray = []; 
    function convertToSimpleArray($array){
        global $resArray; 
        if(is_array($array)){
            foreach($array as $below){
                $res = convertToSimpleArray($below); 
            }
        }else{
            $resArray[] = $array; 
        }
        return $resArray; 
    }
READ ALSO
Получить прямую ссылку на видео

Получить прямую ссылку на видео

Доброго времени сутокНикак не могу получить прямую ссылку на видео из туба

324
Дата в формат mysql

Дата в формат mysql

Ребят подскажите как преобразовать дату в виде "26 августа" в вид "2017-08-26" на PHPЗаранее спасибо!

236
Как правильно построить структуру БД на Laravel?

Как правильно построить структуру БД на Laravel?

Нужно создать страницу контактов (с управлением из админки) в которой 1Будет форма для отправки сообщений с дропдауном из емайл адресов

219
Аналог 1С на PHP [требует правки]

Аналог 1С на PHP [требует правки]

Доброго времени суток увпрограммисты! Возник вопрос можно ли сделать аналог 1С на PHP только под свои нужды, так как в фирме нужно всю бухгалтерию...

491