機会は少ないと思いますが、やるとそこそこ面倒な処理。
筆者も流石に、馬鹿正直に2重ループで実装するところでしたが、
別件の調査中で、なかなか素晴らしい実装を発見しました。
http://blog.supermomonga.com/articles/php/array-to-transverse-matrix.html
実際試して見ましたが。動きますね。挙動が判りません。なんで?
余りにも判らなかったので、簡単なテストスクリプトを書いて試してみました。
https://gist.github.com/2472007b35430b6d71da
call_user_func_arrayが構文としてキモいので、判りにくくなってますが、
- array_mapの
- 第1引数のcallbackにnullを
- 第2引数以降に、配列の2次元目を展開して、複数の配列として
オフィシャルのドキュメントすら「callbackにnullを入れる」という諸行の解説がありませんので、ほとんど裏技でしょう。
しかも、それにより、callback関数の引数に入れるはずだったモノがそのまま出てくるらしい。
結果的に、どうやらarray_map標準の機能しか使ってないということになります。
http://jp2.php.net/array_map
文中で「にいさん」と呼んでるお方は、PHPマスタークラスと思われます。