たまに見かけるがイマイチ意味が理解できない2つの関数を解説する。
■extract関数
マニュアルの記載
配列からシンボルテーブルに変数をインポートする
正直なところ意味が良く分からない。簡単に言うと、配列からローカル変数を生成する。但し、既に同一変数名が存在している場合は上書きされるので注意が必要。
<?php $ary = array( 'John' => 20, 'Mike' => 17, 'Nick' => 10 ); extract($ary); print($John);//20 print($Mike);//17 print($Nick);//10 ?>
個人的には可読性が落ちるような気がする。
■compact関数
<?php $John = 20; $Mike = 20; $Nick = 20; $ary = compact('John', 'Mike', 'Nick'); var_dump($ary); /* array(3) { ["John"]=> int(20) ["Mike"]=> int(20) ["Nick"]=> int(20) } */ ?>
各関数について
- int extract(array $ary[, int $type=EXTR_OVERWRITE[, string $prefix]])
- 配列からローカル変数を生成する。プリフィックスを使用しない限り、数字インデックスは変数として生成されない。
- array compact(mixed $var[, …])
- ローカル変数から配列を生成する。
いらなくね?
おまけに$_GETや$POSTをデフォルトで通すとセキュリティリスクになる。。。はい、使いません!