アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

array_columnのかんたん代替

PHP5.5.0以降で使えるarray_columnという関数があります。

例えば以下のような二次元配列があったとして

$list = array(
    array('hoge' => 1, 'fuga' => 100),
    array('hoge' => 2, 'fuga' => 200),
    array('hoge' => 3, 'fuga' => 300),
);

fugaの値だけを抜き出した以下のような一次元配列に加工したいとき

$fuga_list = array(
    100,
    200,
    300,
);

array_columnなら以下のようにすればOK。

$fuga_list = array_column($list, "fuga");

…なのですが、
諸々の事情でバージョンが足りないしアップデートもできない場合というものがありまして、
一番シンプルそうな代替案を作ったのでメモ。

$func = function ($data){return $data['fuga'];};
$fuga_list = array_map($func, $list);

かなりシンプル版というか機能制限版です。
頻繁に使いたい場合や機能を盛りたい場合は素直に関数を起こすなどした方が良いでしょう。

まだまだシンプル版ですが、例えばこんな感じ。

private function array_column_simple($list, $key)
{
    $return_list = array();
    foreach ($list as $data)
    {
        $return_list[] = $data[$key];
    }

    return $return_list;
}

// 実行時は↓のような感じ
$fuga_list = array_column_simple($list, "fuga");