PHPのメモ帳です。
422 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/