その結果、$s は出力された後も Wangchuanbo のままで、元の変数はアンロードされ、参照変数には値が残っているのではないでしょうか? ?
php
変数参照
------解決策------------------ 張飛の姓は張飛、名は張飛です。イデ
です
つまり、張飛と張一徳は同一人物です
張飛を殺したということは、張飛という名前を世界から消しただけで、その人物は未だに張一徳
という肩書きで徘徊している-----解決策---------- -- ----------- 参照を設定解除します。これは、変数名と変数の内容の間のバインドを解除するだけです
$s = &$str; php では
を意味します
$s と $str はどちらも同じ場所 C
を指します
設定を解除した後、$str は C
を見つけることができません
別の例を挙げてみましょう
シャオ・チャンはシャオ・リーから宝物が海にあると聞きました
シャオ・リーは記憶を失っていますが、シャオ・チャンは宝が海にあることをまだ知っています
C では、参照はメモリアドレスさえも同じであることを意味します
最終的には、これは定数ポインタです
-----解決策--------- 単純に
を入れます
C のポインタはメモリ内の特定のアドレスを指します
C ポインターにはデータ型の概念があるため、ポインターは操作に参加できます
PHP コードはマシンコードにコンパイルされていないため、メモリ アドレスへのアクセスについての話はありません
確かに、PHP の参照機構は C のポインタとよく似ています。ポインタの操作を除けば、少なくともパフォーマンスはポインタ
と同じです。 ---解決策----- --------------- まず、変数の設定を解除するときは、PHP のガベージ コレクションのメカニズムを理解する必要があります。記憶から消えるわけではありません! PHP のガベージ コレクションは GC によって行われます。
------解決策--------- お気に入りに追加~~
-----解決策---------
引用:
引用: 参照の設定を解除します。これは、変数名と変数の内容の間のバインドを解除するだけです
$s = &$str; は、PHP では を意味します。
C では、参照はメモリアドレスさえも同じであることを意味します
……
もちろん、このように理解することに固執する場合は、笑
F ドライブに fff フォルダーがあるので、右クリックして [送る => デスクトップ ショートカット]
次に、名前を aaa に変更し、もう一度実行して、名前を bbb
に変更します。
aaa を開いてその中に txt を作成し、次に bbb を開くとその中に txt が作成されます
そういうことじゃないですか
-----解決策--------- 6 階が正しい、そうする必要がある理解する PHP のガベージコレクションメカニズムを理解する必要があります
PHP 変数は C/C とは異なります。PHP 変数は ZVAL 構造体に格納されます。構造体は次のように定義されます。
typedef struct _zval_struct zval;
...
struct _zval_struct {
/* 変数情報 */
zvalue_value 値; /* 値 */
zend_uint refcount__gc;
zend_uchar タイプ; /* アクティブなタイプ */
zend_uchar is_ref__gc;
};
zval 構造体には 4 つのフィールドがあり、それらの意味は次のとおりです:
デフォルト値を意味する属性名
refcount__gc は参照カウント 1 を表します
is_ref__gc は参照 0 かどうかを示します
value には変数
の値が格納されます。
type 変数
の特定の型
unset() は変数を直接破棄しません。refcount=0
の場合にのみ、PHP のガベージ コレクション メカニズムによってリサイクルされます。
$a = 10;
xdebug_debug_zval('a');
//出力: a: (refcount=1, is_ref=0)=10
$b = &$a;
xdebug_debug_zval('a');
//出力: a: (refcount=2, is_ref=1)=10
$a = 20;
xdebug_debug_zval('a');
//出力: a: (refcount=2, is_ref=1)=20
unset($b);
xdebug_debug_zval('a');
//出力: a: (refcount=1, is_ref=0)=20
-----解決策--------------------------------
実際、多くの人が引用符を解釈しています。誰もが PHP の基礎となる実装について話したがりますが、実際にはこれは間違っています。
説明は深い原則ではなく、単純な原則に基づいて行う必要があります。そうしないと、ますます混乱してしまいます
C 言語の本では、高レベルの人がまだ理解していないため、ポインタの説明にアセンブリ言語を使用しないのと同じように、低レベルの人はどうやって理解できるのでしょうか
PHP 参照はポインタと同様に動作します。したがって、「ポインタ」と考えて問題ありません
参照を「ポインタ」として扱わないでください
それを理解する別の方法は
です。
ポインタは番地に従って商店街の各店舗に出入りするので、次の店舗がどこにあるのか明確にわかります
引用はお店の看板に従って出入りするので、隣に誰がいるのか分かりません
それ以外は、両者にパフォーマンスの差はありません
-----解決策---------