Help us understand the problem. What is going on with this article?

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

有名なネタ。の割にqiitaに見当たらないので貼っとく。

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

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

transpose-php5.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

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

kamawanu
需要がなさ気な記事はあっさり撤収してブログに移動します。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした