2010年10月28日

PHP変数名を文字列で参照 : 可変変数を使用した特殊文字列による変数と JSON との関係

PHP のマニュアルでは明示していませんが、PHP の変数は全て $ を除いた変数名を文字列として扱えるようにできています。

つまり、$value = "値"; が実行されると、自動的に ${"value"} で内容が参照可能になり、逆も同じ結果を生みます。

オンライン実行

この事について書かれた部分を PHP の CHM を HTML にデコンパイルして、内容を検索してみましたが具体的な記述は無く、気がついた人だけが認識するような結果になっています。

唯一、json_decode() の説明に以下のようなサンプルがあるのみです。

print $obj->{'foo-bar'}; // 12345

これは、JSON の表現で以下のような事が可能である事から、似た表現になっていますが、実装されている方法はかなり違うものです。
a = { "2010/10/28" : "当日" }

alert(a["2010/10/28"]);

当然ですが、a.2010/10/28 という表現はできませんが、文字列による表現に置き換えると正しく実行されます。つまり、json_decode() では常にこのようなことを意識する必要があるということです。が、仕様として特殊文字をプロパティに使うかどうかということも考察する必要がありそうです。


関連する記事

PHP : 日本語を使った変数( 特殊文字列で変数 )



posted by at 2010-10-28 14:55 | 文法 | このブログの読者になる | 更新情報をチェックする