最近使った便利なコードをメモ。

PHPの2次元配列を1次元配列に変換する場合、foreach文などループを使った処理が真っ先に考えられるが、array_reduce関数を使った以下のコードで一撃で変換することができる。

$arr = array(
    array(1, 2, 3),
    array(1, 2, 3),
    array(1, 2, 3),
);

$result = array_reduce($arr, 'array_merge', array());

array_reduce関数は第一引数に指定した配列の各要素に対し、第二引数で指定するコールバック関数を繰り返し実行するもので、この場合array_merge関数を各要素に繰り返すことで一つの配列(つまり1次元配列)に変換することができる。

なお、第三引数のarray()は、コールバック関数にarray_mergeを使う場合必須となる。