PHPのメモ帳です。
474 views
以下のような連想配列を関数で受け取る場合を考える。
- $user = [
- "name" => "yamada",
- "mail" => "momomo@yaoo.co.jp",
- "sex" => "man"
- ];
これを関数で受け取り、キーごとに変数を作る場合、次のようなコードを書く。
- function oldType($user) {
- $name = $user["name"];
- $mail = $user["mail"];
- $sex = $user["sex"];
- print("name: {$name} mail:{$mail} sex:{$sex}\n");
- print_r($user);
- }
上記の2~4行目のようにキーごとに変数を定義するのはすごく面倒。
例では3個だが100個とか来ると、きつい。
そんなときはextractを使う。
- function adaptedExtract($user) {
- extract($user);
- print("name: {$name} mail:{$mail} sex:{$sex}\n");
- print_r($user);
- }
すると、キー名が変数になる。
上記ではname、mail、sexは定義していないのに定義されているものとして3行目でname、mail、$sexを出力できる。
参考までに出力結果を以下に記す。
- name: yamada mail:momomo@yaoo.co.jp sex:man
- Array
- (
- [name] => yamada
- [mail] => momomo@yaoo.co.jp
- [sex] => man
- )
- name: yamada mail:momomo@yaoo.co.jp sex:man
- Array
- (
- [name] => yamada
- [mail] => momomo@yaoo.co.jp
- [sex] => man
- )
変数が宣言されていないので、後ろでうっかり上書きしてしまうとかありそう。
むやみやたらと使うのはNGと考えたほうがよい。
ソースの見直しで変数名がgrepに引っかからないので調査が難航することもありえるので、使わないほうがよいか。
Page 6 of 9.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/