[PHP-users 5201] 配列の変数名に変数を使う

php-users@php.gr.jp php-users@php.gr.jp
Mon, 04 Feb 2002 11:19:49 +0900


札幌のかずと申します。

 変数名に変数を使う方法として
 $の後に変数を{}でくくる方法があり、

例)
 $abc  = 'a';
 $hoge = 'abc';
 print("$abc = ${$hoge}<BR>");

結果)
 a =  a

となり、変数名として、$abc の内容が展開されました。
ところが、
配列の変数名に変数を使う方法がわかりません

例)
 $def[0]  = 'a';
 $hoge = 'def';
 print("$def[0]  = ${$hoge}[0]<BR>");

結果)
 a =  Array[0]

となり、$def[0] の内容が求められません。
また、$$hoge として指定しますと

例)
 $def[0]  = 'a';
 $$hoge = 'def';
 print("$def[0] =  $${$hoge}[0]<BR>");

結果)
 a = $def[0]

となり、やはり、$def[0] の内容が展開されません


マニュアルには、以下の記載がありましたが、
望むような結果にはなりませんでした。
配列に変数を利用する方法について、
ご教示いただきたく、宜しくお願い申しあげます。

> 可変変数を配列で使用する際には、曖昧さの問題を解決する必要があります。
> つまり、$$a[1]と書いた場合、 $a[1]を変数として使用したいのか、
> $$aを変数とし [1] を変数の添え字としたいのかを、
> パーサが知る必要があるのです。
> この曖昧さを解決するには、前者では ${$a[1]}とし、
> 後者では ${$a}[1]とする構文を用います。 


Email:Linux@Lupin.net