PHPでDBからテーブルを取得することが多く、単一カラムしか取得できないarray_column() だと機能的に足りないなかったので、配列から複数の列を取得する関数を作りました。(作りましたっていうほどのシロモノではないですが)
public function filterArrayByKeys(array $data, array $keys) { $result = []; foreach ($keys as $key) { $column = array_column($data, $key); foreach ($column as $index => $val) { $result[$index][$key] = $column[$index]; } } return $result; }
//元の配列 $a = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), array( 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith', ) ); //取得したいカラム名 $columnKeys = ['id' , 'first_name']; $list = $this->filterArrayByKeys($a, $columnKeys);
//中身 array( [0] => array( [id] => 2135, [first_name] => 'John' ), [1] => array( [id] => 3245, [first_name] => 'Sally' ) );
array_intersect_key() を使った記事も見つけましたが、私にはこの書き方の方が読みやすかったです。もっとスマートに書ける(読める)ようになりたいなぁ・・・