忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/20 19:12 |
PHP1-75:PHPで可変変数

http://jp.php.net/manual/ja/language.variables.variable.php
マニュアルでは
>ドル記号を二つ使用することにより、 変数の名前として使用することができます
とか書かれていますが、この説明はちょっとわかりづらいです。

${1}という気持ち悪い変数名を作成できるという話をしましたが、言ってしまえばあれも一種の可変変数です(正確には違うが)

最も簡単な例はこうなります。

variable.php

1
2
3
4
5
<?php
    $abc='xyz';
    $a='abc';
    
    print($$a);        //xyzが表示

ただ、$$aという書き方は分かり難い上に$aが配列だった場合に困ったことになったりするので、通常は${$a}のように{}で括ります。

variable2.php
1
2
3
4
5
<?php
    $abc='xyz';
    $a='abc';
    
    print(${$a});        //xyzが表示

配列の要素を呼ぶときの、$a[$b]といった書き方と殆ど同じようなものです。
$$a→${$a}→${'abc'}→$abc
$a[$b]→$a['abc']


PHPの場合、配列が非常に充実しているので、可変変数を使う機会は滅多にないと思います。

http://blog.promob.jp/fri/2009/04/php-5.html
等で挙げられている例の場合、
$str[1] = "さいたー さいたー";
とすれば済む話ですから。

http://d.hatena.ne.jp/web_program/20090318/1237352866
こちらではSmarty的に配列を変数に代入していますが、………extract()というものがあってだな(略

ちなみにSmarty自体はどうやっているかというと、コンパイル時に{$name}<?php echo $this->_tpl_vars['name']; ?>に置換しているだけでした。

 

PR


2009/05/14 19:03 | Comments(2) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

extract関数知りませんでした。となると、本当に可変変数を使う場面が思いつかないですね。まあ、そういうとこもPHPらしいといえばらしいのですが。
posted by tek_kkoc at 2009/05/14 23:11 [ コメントを修正する ]
あら、いらっしゃいませ。
extract()はregister_globalsとの絡みでよく出てきますね。

可変変数の使い道ってオブジェクトのインスタンス変数名指定くらいしか思いつきません。
そんな使い方する時点でちょっとどうなんだと思いますが。
posted by NurseAngel at 2009/05/16 22:24 [ コメントを修正する ]

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP1-76:PHPでページャーつづき | HOME | PHP1-74:PHPでページャー>>
忍者ブログ[PR]