📑
PHP-5/7 で2次元配列を転置する。
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を使うしか無い、のでちょっと解りにくい記述にはなってる。
他の言語
- Python2では 2次配列を転置したい - Qiita
- Rubyでは 配列の転置 - Qiita
いずれも不定長配列の構文があるので見た目はシンプル。
そしてPHP-7では
php - Transpose rows and columns in a 2D array - Stack Overflow
$transpose = array_map(null, ...$result);
Discussion