• ベストアンサー

PHPの 「 $$ 」 ( 2つの$ ) はどういう意味でしょうか

   $aaa[$i] = $$bbb; ↑の「 $$ 」は何でしょうか? 変数名の前につける$は普通1つなのに、何故2つ付いてるんでしょうか?   

質問者が選んだベストアンサー

  • ベストアンサー
noname#45976
noname#45976
回答No.4

簡潔にご説明いたします。 $$を二つつける、と考えずに、$のとなりに$bbbの値が入るとどうなるかを考えて見ましょう。^^ たとえば、$bbbという変数に「ccc」という文字が入っていたとします。 すると、$$bbbは、$cccという変数になります。 powuran さんの例でいうと、$aaa[$i] = $$bbb の$aaa[$i]に代入される値は、$cccの値になる、ということです。(^-^b 前もって$cccに値が代入されていれば、その値になります。

その他の回答 (3)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

> No.1の方の例題がどう表示されるのかも abcと表示されます。 つまり $test="abc" です。 また、$b="test"です。 ここで、 print $b; とすれば、当然 test と表示されます。 が print $$b; であれば、abc と表示される。 この違いはおわかりでしょう。 しかしこの例題では可変変数に何の意味があるのかさっぱり分かりませんよね? そこでさっき示した例をもう一回。 フォームで、データをPOSTするときのことを考えます。 form.php側で、 print "<form action=\"confirm.php\" method=\"post\">\n"; for($i=1;$i<=n;++$i) {   print "<input type=\"text\" name=\"name".$i."\"><br>\n"; } としたとします。 これは、 <input type="text" name="name1"><br> <input type="text" name="name2"><br>   :   : <input type="text" name="textn"><br> となるのは分かりますよね? で、次に confirm.php 側に送られてくるデータは、 $name1=$_POST["name1"] , $name2=$_POST["name2"] … $name2=$_POST["namen"]となるのですが、 こういった場合何かの一括処理をしたい場合は面倒ですよね? 例えば、全データに半角英字しか利用してはいけない場合、 if(ereg("[^a-zA-Z]",$name1) { die("半角英字以外が使われてます。"); } と全部やっていくのは面倒なので、 for($i=1;$i<=n;++$i) {   if(ereg("[^a-zA-Z]",${"name$i"}) { die("半角英字以外が使われてます。"); } } とやったりするのに利用します。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

NO1さんの例題はよく見かけますが、これだと実際何の意味があるのかさっぱり分かりませんよね?(笑) 可変変数は例えば、 <input type="text" name="mount?"> mount1 mount2  :  : mountn と言うよなものをPOSTするときなどに使います。 それぞれ${"mount$i"}と行った形で受け取れます。

noname#26350
質問者

補足

ご回答ありがとうございます! すみません・・・詳しく説明して頂いたのに 頭が悪い為、いまいち意味がつかめていません・・・ なんとなくは分かるのですが・。 No.1の方の例題がどう表示されるのかも わからないのですが。   

noname#18290
noname#18290
回答No.1

可変変数です。 $test = 'abc'; $b = 'test'; echo $$b; が、どう表示されるか確認しましょう。

noname#26350
質問者

補足

早速のご回答ありがとうございます! すみません・・・今PHP実行環境がない為 どう表示されるかよければ具体的に教えていただけると 大変助かります・・・。 週明けになれば実行できるのですが、それまでに知っておきたいと思いまして質問しました。      

関連するQ&A