今日、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」になります「。
」
参考のために小さな栗を2つ添付します:
リーリー リーリー
返信内容:上記のステートメントに従う場合は、次のようにコードを少し変更します:
リーリーそれでは
コードの 2 行目:$var_dup と $var は、refcount が 2 の同じ zval を指します。
PHPは、操作対象のzvalのrefcountが1より大きいことを検出すると、PHPはSeparationを実行し、$var_dupを分離し、$varと$var_refを書き込み時の変更に関連付けます。つまり、refcount=2、is_ref=1;
$varと$var_refが指すzvalはis_ref=1;なので分離されず、$var_refと$varの値は両方とも「OK」になります「。」
私の理解では、プログラムの最後では、3行目の実行時に$var_dupが分離されているため、その値は「laruence」のままになるはずですが、プログラムを実行してみると、それも変化していることがわかりました。 「OK」になり、非常に混乱しています。答えを知っている人が私を助けてくれることを願っています。私の理解が間違っていたのか、それとも別の隠された意味があるのかわかりません、ありがとう!
参考のために小さな栗を2つ添付します:
リーリー リーリーコピーオンライト
! ! ! ! ! ! ! ! ! ! ! ! コピーオンライト
! ! ! ! ! ! ! ! ! ! ! !
Copy On Write
!!!!!!!!!!!!写时复制
コードの 3 行目に書き込み操作がありますか?分別作業は必要ありません! ?