@ operatorは、式に対してのみ有効です。初心者向けの簡単なルールは、値をどこかから取得できる場合は、その値の前に @ 演算子を付けることです。たとえば、変数、関数、include() 呼び出し、定数などの前に置くことができます。関数またはクラスの定義の前に配置したり、if や foreach などの条件構造で使用したりすることはできません。
現在の「@」エラー制御演算子プレフィックスは、スクリプトを終了させる重大なエラーのエラー報告も無効にします。これは、存在しない関数呼び出しまたは間違った型の関数呼び出しの前に「@」を使用してエラー メッセージを抑制すると、スクリプトはそこで何の理由も示されずに終了することを意味します。
$ については、これが重要な問題です
基本形式:
function &find_var($param) //这里用&在对象前面,作用为声明 { /* ...code... */ return $found_var; } $foo =& find_var($bar); //这里用&,作用为联系变量 $foo->x = 2; //赋值给函数
例:
function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } $a=test();//这条语句会输出$b的值为1, $a=5; $a=test();//这条语句会输出$b的值为2 ,因为没有引用返回,$a=5,不对对象起赋值作用 $a=&test();//这条语句会输出$b的值为3 ,成功引用返回,下面的代码起作用 $a=5; $a=test();//这条语句会输出$b的值为6
以下の説明:
このように、$a=test(); から実際には参照を取得しません。 function 、これは通常の関数呼び出しと変わりません。理由としては、これは PHP の規定で、
php では $a=&test(); で取得したものが関数の戻り値になると規定されています。
参照リターンとは何かについては (PHP マニュアルには次のように書かれています: 参照リターンは、関数を使用して参照をバインドする必要がある変数を見つけたい場合に使用されます。)
上記の例を使用して説明します:
$a=test ( ) メソッドは関数の値を $a に割り当てるだけであり、$a に対する変更は関数内の $b には影響しません。 $b を返す変数と $a 変数のメモリ アドレスは同じ場所に移動し、同じ結果が得られます ($a=&b;)。したがって、$a の値を変更すると、$a の値も変更されます。 $b の値、つまり $a=&test();
$a=5;
を実行すると、$b の値は 5 になります...
次に、php 関数の前にアンパサンドを追加しますそうですか?
PHP 変数の前のアンパサンド記号は何を意味しますか? まず例を見てみましょう:
$foo = 321; $bar = &$foo; $bar = 123; print $foo; //那么输出的结果将会是什么呢新しい変数を変更すると、元の変数に影響を与えます。
注: アドレスによって割り当てることができるのは、名前付き変数のみです。つまり、$bar の値を変更すると、$foo の値も変更されます。
$_GET[1] = 1; function &a() { $a = $_GET[1]; return $a; } $x =& a(); $x = 'MoontoC'; echo $_GET[1]; // 此时这里会显示 MoontoC, 而不是最初赋值的1意味を理解していますか?
以上がPHPの関数や変数の前に@や$を付ける場合の違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。