3

同様の質問がここで尋ねられました: $myvar-test のような PHP 変数は有効ではありませんか?

そして、PHP Userland Naming Guideを読みました 。

変数名は、PHP の他のラベルと同じ規則に従います。有効な変数名は、文字またはアンダースコアで始まり、任意の数の文字、数字、またはアンダースコアが続きます。正規表現としては、次のように表現されます: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

私が興味を持っているのは、この回答と、これらの回避策が機能する理由です: ${'0x00'}、または this: ${'900'}、または this ${'bad-name'}.

私の質問には 2 つの部分があります...なぜこれが機能するのですか? 私の質問の 2 番目の部分: それらは有効な変数と見なされますか、それとも何か他のものと見なされますか?

4

2 に答える 2

1

このリンクによると: http://cowburn.info/2008/01/12/php-vars-curly-braces/

答えは次のとおりです。

  • 質問 1: 中括弧内は、変数の名前以上のものになるため、$_GLOBALS配列内のキーと値のペアになります。
  • $var質問 2: それらはスクリプトの $Globals の一部になりますが、通常の表記法 ではアクセスできません。
于 2012-06-15T16:20:33.157 に答える
0

パーサーは実際には { } 内の式を検証していないと思います。ただし、PHP は内部的に HashTable を使用して変数を格納するため、任意の文字列または数値が有効です。

于 2012-06-15T16:22:01.137 に答える