array_combine, extract
array_combine
array_combine ― 一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成する
PHP: array_combine - Manual
使いどころがわからなかったこの関数だけど、CSVフィアルを扱うプログラムを書いていて、キーに名前を付ける場合に便利なのでは、と思った。
<?php $data = array('Ichiro', '20', '090-1234-5678'); // CSVデータをsplitした結果と思ってください $keys = array('name', 'age', 'tel'); $items = array_combine($keys, $data); var_dump($items); # array(3) { # ["name"]=> # string(6) "Ichiro" # ["age"]=> # string(2) "20" # ["tel"]=> # string(13) "090-1234-5678" # }
fgetcsv() でファイルから読み込んだ CSV データの配列(上記コードの $data に相当)のキーは数値(0,1,2,...)になっている。数値で配列にアクセスすると、何のデータを操作しているのか分りづらくなるので、どうにかして項目名でアクセスしたくなる。そんなときに手っ取り早く名前を付けるのに使えるのでは*1。
extract
extract ― 配列からシンボルテーブルに変数をインポートする<<
PHP: extract - Manual
上記のコードだと、キーは数値から項目名に変換できたけど、まだ依然として配列のままになっている。各項目を別々の変数に割り当てたいなんて時には、extract() を使うと便利。
<?php $data = array('Ichiro', '20', '090-1234-5678'); $keys = array('name', 'age', 'tel'); $items = array_combine($keys, $data); extract($items); var_dump($name, $age, $tel); # string(6) "Ichiro" # string(2) "20" # string(13) "090-1234-5678"
配列のままの方が扱いやすいような気がするが、どうだろう。
*1:定数でアクセスするってのもあるけど...