многомерный - одномерный массив php




Поворот многомерного массива в одномерный массив (7)

Я уже несколько секунд стучаю в эту голову.

У меня этот многомерный массив:

Array
(
    [0] => Array
        (
            [0] => foo
            [1] => bar
            [2] => hello
        )

    [1] => Array
        (
            [0] => world
            [1] => love
        )

    [2] => Array
        (
            [0] => stack
            [1] => overflow
            [2] => yep
            [3] => man
        )

И мне нужно это сделать:

Array
(
    [0] => foo
    [1] => bar
    [2] => hello
    [3] => world
    [4] => love
    [5] => stack
    [6] => overflow
    [7] => yep
    [8] => man
)

Есть идеи?

Все остальные решения, которые я нашел, решают многомерные массивы с разными ключами. В моих массивах используются только простые цифровые клавиши.


В PHP5.6 есть другой способ решить эту проблему, объединив функции, array_shift() чтобы удалить первый элемент исходного массива array_pus() чтобы добавить элементы в новый массив, важно, что ... splapt / elipse он array_shitf() return array_shitf() как аргумент.

<?php

$arr = [
        ['foo', 'bar', 'hello'],
        ['world', 'love'],
        ['stack', 'overflow', 'yep', 'man', 'wow']
    ];

$new = [];
while($item = array_shift($arr)){
    array_push($new, ...$item);
}

print_r($new);

Вывод:

Array
(
    [0] => foo
    [1] => bar
    [2] => hello
    [3] => world
    [4] => love
    [5] => stack
    [6] => overflow
    [7] => yep
    [8] => man
    [9] => wow
)

Пример - идеон


Начиная с PHP 5.3 кратчайшее решение выглядит как array_walk_recursive () с новым синтаксисом закрытия:

function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

Это действительно все, что нужно:

foreach($array as $subArray){
    foreach($subArray as $val){
        $newArray[] = $val;
    }
}

Это сделает array_walk_recursive ($ array, function ($ a) use (& $ return) {$ return [] = $ a;});



$blocked_dates = array(
                    '2014' => Array
                        (
                            '8' => Array
                                (
                                    '3' => '1',
                                    '4' => '1',                                     
                                    '6' => '1',                                     
                                    '10' => '1',
                                    '15' => '1',
                                    '25' => '1'

                                )

                        ),
                    '2015' => Array
                        (
                            '9' => Array
                                (
                                    '3' => '1',
                                    '4' => '1',                                    
                                    '6' => '1',                                     
                                    '10' => '1',
                                    '15' => '1',
                                    '25' => '1'

                                )

                        )    

                );

RESUTL (ОДИН РАЗМЕРНЫЙ МАССА):

$unavailable_dates = array();
foreach ($blocked_dates as $year=>$months) {

    foreach ($months as $month => $days) {

        foreach ($days as $day => $value) {

            array_push($unavailable_dates,"$year-$month-$day");
        }

    }
}



$unavailable_dates = json_encode($unavailable_dates);
print_r($unavailable_dates);

OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]





multidimensional-array