Преобразование массива одноэлементных массивов в один размерный массив

У меня есть такой массив:

Array
(
    [0] => Array
        (
            [0] => 88868
        )
    [1] => Array
        (
            [0] => 88867
        )
    [2] => Array
        (
            [0] => 88869
        )
    [3] => Array
        (
            [0] => 88870
        )
)

Мне нужно преобразовать это в одномерный массив. Как я могу это сделать?

Например вот так..

Array
(
    [0] => 88868
    [1] => 88867
    [2] => 88869
    [3] => 88870 
)

Любая встроенная функциональность php доступна для этого преобразования массива?


person DEVOPS    schedule 06.01.2012    source источник


Ответы (5)


Для вашего ограниченного варианта использования это будет сделано:

$oneDimensionalArray = array_map('current', $twoDimensionalArray);

Это может быть более обобщенным, когда в подмассивах много записей:

$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);
person deceze♦    schedule 06.01.2012
comment
Я не понимаю "текущий". Я вижу в doc php callable $callback, но, например, не вижу функции или кода для этого. Я ценю некоторые примеры. - person abkrim; 08.11.2015
comment
Функция @abkrim current() возвращает значение текущего элемента в массиве. например: $fruits = array(банан, яблоко, апельсин); echo current($fruits) // вернет банан, так как текущий указатель находится на индексе 0, который является бананом. - person Rafique Mohammed; 02.06.2016

Функция PHP array_mergeDocs может сгладить ваш массив:

$flat = call_user_func_array('array_merge', $array);

В случае, если исходный массив имеет большую глубину, чем 2 уровня, SPL в PHP имеет RecursiveArrayIterator, который можно использовать для выравнивания Это:

$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);

См. также: Превращение многомерного массива в одномерный массив

person hakre    schedule 06.01.2012

пытаться:

$new_array = array();
foreach($big_array as $array)
{
    foreach($array as $val)
    {
        array_push($new_array, $val);
    }    
}

print_r($new_array);
person redmoon7777    schedule 06.01.2012

Ага.

$values = array(array(88868), array(88867), array(88869), array(88870));
foreach ($values as &$value) $value = $value[0];

http://codepad.org/f9KjbCCb

person benesch    schedule 06.01.2012

В то время как некоторые ответы на странице, которая ранее использовалась для закрытия этой страницы были ответы, которые соответствовали этому вопросу. Существуют методы для этого конкретного вопроса, которые не относятся к другой странице из-за структуры входных данных.

Образец структуры данных здесь представляет собой массив одноэлементных индексированных массивов.

var_export(array_column($array, 0));

Это все, что требует этот вопрос.

person mickmackusa    schedule 17.01.2021