Есть ли какая-либо функция PHP array_* для извлечения отдельных значений из многомерного массива?

Если у меня есть многомерный массив, и я хочу извлечь из него некоторые данные и поместить их в новый массив, существует ли какой-либо существующий array_*() Функция для этого?

Например, если у меня есть следующий массив:

array(
    [
        'id'    => 1,
        'num'   => 200,
        'text'  => 'abc'
    ],
    [
        'id'    => 2,
        'num'   => 230,
        'text'  => 'def'
    ],
    [
        'id'    => 3,
        'num'   => 100,
        'text'  => 'ghi'
    ],

)

Я хотел бы получить следующий результирующий массив:

[ 'abc', 'def', 'ghi' ]

Конечно, я всегда могу сделать это вручную, используя foreach() или что-то подобное, но однострочники всегда хороши:)

2 ответа

Решение

Попробуйте функцию array_column;

array_column(array $data, 'key')

Вы можете использовать array_map() в php

<?php
    $array = array([
            'id'    => 1,
            'num'   => 200,
            'text'  => 'abc'
        ],
        [
            'id'    => 2,
            'num'   => 230,
            'text'  => 'def'
        ],
        [
            'id'    => 3,
            'num'   => 100,
            'text'  => 'ghi'
        ],

    );


    $return = array_map(function ($value) {
        return  $value['text'];
    }, $array);

    echo "<pre>"; 
    print_R($return);
    ?>
Другие вопросы по тегам