ホームページ  >  記事  >  バックエンド開発  >  PHPの関数や変数の前に@や$を付ける場合の違いを詳しく解説

PHPの関数や変数の前に@や$を付ける場合の違いを詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-06-21 11:01:577408ブラウズ

@ 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 を学習するとき、値渡しと参照渡しの重要性を理解するのは困難です。彼らはとにかく欲しいものを手に入れることができると感じますが、多くの場合はそうではありません。 , 得られるものは同じでも、値段が全く違います。200万ワードをバリューとして送信すると、同時に400万ワードがメモリに保存されて使用されるため、消費量が2倍になります。参照を渡すことは、それを転送するための単なるショートカットです。

以上がPHPの関数や変数の前に@や$を付ける場合の違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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