Processing math: 100%

今日のぺちぱー

PHPのメモ帳です。

474 views

以下のような連想配列を関数で受け取る場合を考える。

  1. $user = [
  2. "name" => "yamada",
  3. "mail" => "momomo@yaoo.co.jp",
  4. "sex" => "man"
  5. ];

これを関数で受け取り、キーごとに変数を作る場合、次のようなコードを書く。

  1. function oldType($user) {
  2. $name = $user["name"];
  3. $mail = $user["mail"];
  4. $sex = $user["sex"];
  5. print("name: {$name} mail:{$mail} sex:{$sex}\n");
  6. print_r($user);
  7. }

上記の2~4行目のようにキーごとに変数を定義するのはすごく面倒。
例では3個だが100個とか来ると、きつい。

そんなときはextractを使う。

  1. function adaptedExtract($user) {
  2. extract($user);
  3. print("name: {$name} mail:{$mail} sex:{$sex}\n");
  4. print_r($user);
  5. }

すると、キー名が変数になる。
上記ではname、mail、sexは定義していないのに定義されているものとして3行目でnamemail、$sexを出力できる。

参考までに出力結果を以下に記す。

  1. name: yamada mail:momomo@yaoo.co.jp sex:man
  2. Array
  3. (
  4. [name] => yamada
  5. [mail] => momomo@yaoo.co.jp
  6. [sex] => man
  7. )
  8. name: yamada mail:momomo@yaoo.co.jp sex:man
  9. Array
  10. (
  11. [name] => yamada
  12. [mail] => momomo@yaoo.co.jp
  13. [sex] => man
  14. )

ただし

変数が宣言されていないので、後ろでうっかり上書きしてしまうとかありそう。
むやみやたらと使うのはNGと考えたほうがよい。
ソースの見直しで変数名がgrepに引っかからないので調査が難航することもありえるので、使わないほうがよいか。

Page 6 of 9.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626