📑

PHP-5/7 で2次元配列を転置する。

2021/09/08に公開

PHP-5

小生が知ってるなかで最古の情報はこれ。2011年。もう7年前か....

PHPで二次元配列の転置行列を得る方法 - かなりすごいブログ

function transverse_matrix($array){
    return call_user_func_array('array_map',array_merge(array(null),$array));
}

array_mapの引数として

  • 先頭にnullを差し込む
  • 本来はcallbackを指定するところだが、nullを受け付けるとか流石はPHP
  • 配列の1次元目を、個々の引数にバラす
  • そしてcallback=nullの処理で、引数の中身が全部くっついて出て来る。
  • func_get_args()の出力がそのまま漏れてる?

をするための PHP-5の言語機能としては call_user_func_arrayを使うしか無い、のでちょっと解りにくい記述にはなってる。

他の言語

いずれも不定長配列の構文があるので見た目はシンプル。

そしてPHP-7では

php - Transpose rows and columns in a 2D array - Stack Overflow

$transpose = array_map(null, ...$result);

Discussion