ループせずに多次元配列内の特定の「キー」の配列を取得する方法 [重複] 質問する

ループせずに多次元配列内の特定の「キー」の配列を取得する方法 [重複] 質問する

次の多次元配列 (MySQL またはサービスから取得) があると仮定します。

array(
    array(
        [id] => xxx,
        [name] => blah
    ),
    array(
        [id] => yyy,
        [name] => blahblah
    ),
    array(
        [id] => zzz,
        [name] => blahblahblah
    ),
)

1つの配列をid内蔵「php 関数呼び出しですか? それとも 1 行のコードですか?
従来のループと値の取得は知っていますが、これは必要ありません:

foreach($users as $user) {
    $ids[] = $user['id'];
}
print_r($ids);

もしかしたらarray_map()call_user_func_array()魔法をかけられる人もいるかもしれません。

ベストアンサー1

PHP 5.5以降では、array_column:

$ids = array_column($users, 'id');

これは、最近のプロジェクトでは推奨されるオプションです。ただし、PHP <5.5 をサポートする必要がある場合は、次の代替手段があります。

PHP 5.3以降では、array_map匿名関数を使用すると、次のようになります。

$ids = array_map(function ($ar) {return $ar['id'];}, $users);

(技術的にはPHP 4.0.6以降)以前では、匿名関数を作成する必要があります。create_functionその代わり:

$ids = array_map(create_function('$ar', 'return $ar["id"];'), $users);

おすすめ記事