ホームページ  >  記事  >  バックエンド開発  >  PHP 変数の分離と参照に関する質問

PHP 変数の分離と参照に関する質問

WBOY
WBOYオリジナル
2016-10-22 00:14:16984ブラウズ

今日、PHP 変数の分離と参照に関するブラザー ニアオの記事を読みましたが、理解できなかった問題がありましたので、最初にスクリーンショットをいくつか投稿します。

PHP 変数の分離と参照に関する質問

上記のステートメントに従う場合は、次のようにコードを少し変更します:

リーリー

それでは

コードの 2 行目: $var_dup と $var は、refcount が 2 の同じ zval を指します。

3行目を実行すると: PHPは、操作対象のzvalのrefcountが1より大きいことを検出すると、PHPはSeparationを実行し、$var_dupを分離し、$varと$var_refを書き込み時の変更に関連付けます。つまり、refcount=2、is_ref=1;

4行目に進むと、 $varと$var_refが指すzvalはis_ref=1;なので分離されず、$var_refと$varの値は両方とも「OK」になります「。

私の理解では、プログラムの最後では、3行目の実行時に$var_dupが分離されているため、その値は「laruence」のままになるはずですが、プログラムを実行してみると、それも変化していることがわかりました。 「OK」になり、非常に混乱しています。答えを知っている人が私を助けてくれることを願っています。私の理解が間違っていたのか、それとも別の隠された意味があるのか​​分かりません、ありがとう!

参考のために小さな栗を2つ添付します:

リーリー リーリー

返信内容:

今日、PHP 変数の分離と参照に関する Niao 兄弟の記事を読みましたが、理解できなかった問題がありましたので、最初にスクリーンショットをいくつか投稿します。

PHP 変数の分離と参照に関する質問上記のステートメントに従う場合は、次のようにコードを少し変更します:

リーリー

それでは

コードの 2 行目:

$var_dup と $var は、refcount が 2 の同じ zval を指します。

3行目を実行すると:

PHPは、操作対象のzvalのrefcountが1より大きいことを検出すると、PHPはSeparationを実行し、$var_dupを分離し、$varと$var_refを書き込み時の変更に関連付けます。つまり、refcount=2、is_ref=1;

4行目に進むと、

$varと$var_refが指すzvalはis_ref=1;なので分離されず、$var_refと$varの値は両方とも「OK」になります「。
私の理解では、プログラムの最後では、3行目の実行時に$var_dupが分離されているため、その値は「laruence」のままになるはずですが、プログラムを実行してみると、それも変化していることがわかりました。 「OK」になり、非常に混乱しています。答えを知っている人が私を助けてくれることを願っています。私の理解が間違っていたのか、それとも別の隠された意味があるのか​​わかりません、ありがとう!

参考のために小さな栗を2つ添付します:

リーリー リーリー

コピーオンライト! ! ! ! ! ! ! ! ! ! ! !

コピーオンライト! ! ! ! ! ! ! ! ! ! ! !

Copy On Write!!!!!!!!!!!!
写时复制コードの 3 行目に書き込み操作がありますか?分別作業は必要ありません! ?

3 行目の操作は、refcount を 3 に増やすことです。

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