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}', '';
出力は次のとおりです: 1 Hello{$a}?
場合: str_replace('{$foo} ',$foo, '{$foo}.some');
上記の理由により、次のように変更する必要があります:
? ('{' , '$foo',} '),array('',$foo, ''), '{$foo}.some');
出力は次のとおりです: 2 HelloHello
二重引用符で囲むと、{} またはそうでない場合、変数は常に解析されます。
?? echo '3 ', $a, "{{$a}}", '';??
出力は次のとおりです: 3 Hello{Hello}?したがって、{} で結果を出力したい場合は、2 つのレイヤーを追加する必要があります。
?? echo '4 ', $a, "${$a}", '';?
出力は次のとおりです: 4 Helloworld
?? a , ${$a}, '';
出力は次のとおりです: 4 Helloworld
// ${$expression}、外側に二重引用符があるかどうかに関係なく、結果は同じです?
?? echo '6 ', $a, "{${$a}}", '';?
?? , $a, "{{${$a}}}", ''
出力は次のとおりです: 7 Hello{world}
//{} で結果を出力するには、次のようにします。もう 1 つのレイヤーを追加する必要があります。
echo '8 ', $a, "$$a", '';
出力は次のとおりです: 8 Hello$Hello
//二重引用符内の $ は 1 回だけ実行されます。 。したがって、結果はあなたが望むものではありません。
注: {} は配列、つまり配列の添字アクセスにも使用できます。つまり、
$a='ux:Cache'; $a{2}=''; のみを使用します。 ?
echo '9 ', $a, "{a}", '';
出力は次のようになります: 9 Hello{a}
?? echo '10 ', $a, " ${a}", '';
出力は次のとおりです: 10 HelloHello は、{} の外側に $ があることを確認でき、{} は分析のために結果を $ に送信します。
概要: 二重引用符で囲まれた
$ は 1 回だけ解析されます。複数の解析は行われません。 echo "$$a" が echo "${$a}" に変更された場合、$ が {$foo} になったときに {} が解析されます。 {} で結果を出力するには、{{$foo}}$ は文字列を逆方向に検索するため、配列または式の結果を
$$array[$i][$j ] にすることはできません。代わりに、${$array[$i][$j]}