異なるデータ型に対する PHP の = 代入演算子の異なる動作

WBOY
リリース: 2016-06-13 12:12:25
オリジナル
909 人が閲覧しました

まず、代入演算子 = の動作を説明します。次の例を見てください:

コードをコピーします コードは次のとおりです:


$ i = 0;
$j = $i;
echo $j; // 出力 0

$arr; 0);
$arr2 = $arr;
$arr[0]; //出力 0

クラス B

$i = 0;

$b = new B();
$c->i = 1; >echo($b- >i); //出力 1


この例からわかるように、= 演算子の右側の変数が基本データ型であるか、配列の場合、= 演算子は右側の変数のコピーを取得します。 代入を左側の変数にコピーします。右側の変数がクラスなどの基本的なデータ型または配列でない場合、= は右側の変数への参照を割り当てます。左側の変数。注: これは、右側の変数が指すコンテンツ領域ではなく、右側の変数への参照です。詳細については、以下の例を参照してください。


コードをコピー

コードは次のとおりです。

$a = new A(); $b_r = &$a; >$b_a = null; var_dump($a); // オブジェクト(A)[2] を出力します。$a が指す内容はそのままです。

$b_r = null; ); //Print null、$a が指すコンテンツはまだ存在します ポイントされたコンテンツはクリアされます



上記の例は、$var = &$a を使用して値を割り当てる場合も示しています。 $var=null を使用して変数 $var を破棄すると、実際には $var が指すコンテンツが null に設定されます。これは、コンテンツ領域を指す参照変数を破棄するために使用できることも意味します。コンテンツ領域のコンテンツ。したがって、変数 $var を破棄するには、unset($var) を使用します。 PS: 実際、この方法で $var を割り当てることは単なる参照であり、破棄されるかどうかは関係ありません。これは、$var を unset によって破棄する必要があることを意味します。

以下は「ユーザーマニュアル」の「引用説明」の例です:

$a =& $b;
以下にそのような説明があります:
Thisつまり、$a と $b は同じ変数を指します。
注: ここで $a と $b はまったく同じです。これは、$a が $b を指すこと、またはその逆を意味するのではなく、$a と $b が同じ場所を指すことを意味します。

引用とは何ですか?



コードをコピーします

コードは次のとおりです:


PHP でのクォートとは、同じ変数の内容に異なる名前でアクセスすることを意味します。これは C ポインターとは異なり、参照はシンボル テーブルのエイリアスです。 PHP では変数名と変数の内容が異なるため、同じ内容でも異なる名前が付けられることに注意してください。最も近い類似点は、Unix のファイル名とファイル自体です。変数名はディレクトリ エントリであり、変数の内容はファイル自体です。参照は、Unix ファイル システムにおける緊密な接続と考えることができます。

「参照とは何か」について少し説明します。 int i = 0; int *p = &i; > p = &j;

上記のコードでは、p は i のメモリ アドレスを指すポインタであり、*p=&j は p ポインタのポインティングを変更することを示し、*p= として表されます。 111 この式は i の内容を変更します。これは PHP では当てはまりません。次の例では、


$i = 0;
$p = &$i; によって $i の値がすぐに変更されます。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート