ホームページ >バックエンド開発 >PHPチュートリアル >PHP 変数識別子のいくつかのルール

PHP 変数識別子のいくつかのルール

WBOY
WBOYオリジナル
2016-06-13 13:02:07819ブラウズ

PHP 変数識別子のいくつかのルール

PHP 変数識別子は非常に特別な利便性を提供します。しかし、長年PHPに携わっているプログラマーの中には、その具体的な使い方が明確になっていない人も少なくなく、失敗したときにどこで間違えたのか分からないということもあります。それでは、まとめます。誰でも簡単にすぐにマスターできます。
PHP 変数の操作メカニズムは、変数識別子 $ の後の文字列、または式の演算結果の文字列を変数名として使用し、変数プールに移動して変数値を取得します。
PHP は変数の「名前ポインター」を提供することと同等であることがわかります。 C++ アドレス ポインタとは異なり、null アドレスの危険性がありません。変数メモリのオーバーフローの問題も発生しません。この PHP はすべて私たちのために行われます。
変数識別子:
$: 次の文字列を変数名として使用し、同じ名前の変数を取得します。
?? $a='Hello';
?? $$a = 'world';
{} 式を文字列に解析し、この文字列の変数を取得します。{} 単独では存在できません式の外側にある場合、それはプロセス制御とみなされ、エラーが報告されます。つまり、{} の前に $ があるか、外側に引用符がなければなりません。
エコー $a, ${$a}; エコー $a, $$a;

この 2 つの違い: $ は常にその後の最初の文字列を検索し、{} は内部式を文字列に解析します。 PHP は、このメソッドを使用して変数の「名前ポインタ」を実装します。

${}: {} によって返された文字列は、さらなる処理のために $ に渡されます。目的: 式の結果の変数を取得します。
?例: ${$array[$i][$j]}、$$array[$i][$j]} を使用すると、PHP は変数 $$array を見つけます。結果の変数名として $array[$i][$j] を探す代わりに。

関数と式内の

{}
推測してください: 次のプログラムは次の値を返します:

   $a='Hello';
   $$a = 'world';
   echo '1 ', $a, '{$a}', '</br>';
   echo '2 ', $a, "{$a}", '</br>';
   echo '3 ', $a, "{{$a}}", '</br>';   
   echo '4 ', $a, "${$a}", '</br>';   
   echo '5 ', $a, ${$a}, '</br>'; 
   echo '6 ', $a, "{${$a}}", '</br>'; 
   echo '7 ', $a, "{{${$a}}}", '</br>'; 
   echo '8 ', $a, "$$a", '</br>'; 
        echo '9 ', $a, "{a}", '</br>';
        echo '10 ', $a, "${a}", '</br>';

?

結果:

?? echo '1 ', $a, '{$a}', '98b7c4ac8145619ea038b1864d309e8f';

出力は次のとおりです: 2 HelloHello
二重引用符で囲むと、{} またはそうでない場合、変数は常に解析されます。
?? echo '3 ', $a, "{{$a}}", 'a5b8fac8467e630f1fa8170a287b7ad9';
出力は次のとおりです: 4 Helloworld
// ${$expression}、外側に二重引用符があるかどうかに関係なく、結果は同じです?

?? echo '6 ', $a, "{${$a}}", '9afb4a34c9a8bf13d4dfeb3f47a4d70b'
出力は次のとおりです: 7 Hello{world}
//{} で結果を出力するには、次のようにします。もう 1 つのレイヤーを追加する必要があります。
echo '8 ', $a, "$$a", '486be441a9a66fc4a66012ed071c3695';
出力は次のとおりです: 10 HelloHello は、{} の外側に $ があることを確認でき、{} は分析のために結果を $ に送信します。

概要: 二重引用符で囲まれた
$ は 1 回だけ解析されます。複数の解析は行われません。 echo "$$a" が echo "${$a}" に変更された場合、$ が {$foo} になったときに
{} が解析されます。 {} で結果を出力するには、{{$foo}}
$ は文字列を逆方向に検索するため、配列または式の結果を
$$array[$i][$j ] にすることはできません。代わりに、${$array[$i][$j]}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。