変数代入とオブジェクト代入の比較
<?php // 声明一个变量并赋值 $a = 1; // 将数据类型的值 赋值 给一个变量 $b = $a; // 修改$a的值 $a = 2; // $a和$b是两个独立的内存空间修改其中一个另一个不受影响 echo $b; // 1 class Person { public $name; public $age; } // 将对象类型的数据 赋值 给一个变量 $p = new Person; // 通过对属性修改值,来确定面向对象中 对象的传值方式 $p->name = 'jesse'; // 若是成功修改值,则是引用传值 echo $p->name; // jesse ?>
事例説明:
ここでは、変数代入方法とオブジェクトについて説明します。代入方式と比較して、コード5行目の代入方式は「コピー代入」なので、ソース値($aの値)を変更しても、$bの値は影響を受けません。 $a と $b のメモリ関係図は次のとおりです。
コードの 20 行目では、$p 変数にデータ型を割り当て、内部の値を正常に変更しています。 $p を介したオブジェクト 変数の比較 値渡しメソッドは、これが参照渡し値であることを証明します メモリ関係図は次のとおりです:
コード行20は$p変数にデータ型を代入し、$pを通じてオブジェクト内部を変更します。値の取得は成功です。変数の値の転送方法を比較すると、参照転送であることがわかります。メモリ関係図は次のようになります。
<?php class Person { public $name; public $age; // 将对象类型的数据 赋值 给一个变量 $p = new Person; // 通过对属性修改值,来确定面向对象中 对象的传值方式 $p->name = 'jesse'; // 将对象赋予另一变量 $m = $p; // 另一变量修改属性值 $m->name = 'Marry'; // 输出源变量 赋值变量访问内部属性的结果 echo $p->name, $m->name; } ?>
コードの 12 行目は、この記事の最も「仕上げ」のコードです。等号の右側はオブジェクト、左側は変数です。鋭い質問ですが、$m はオブジェクトをコピーしますか?それとも参照渡しですか?このコードのメモリ関係は次のとおりです。
したがって、最後の 2 つのオブジェクトの属性値は Marry!!!
# に変更されます。 ## それでは、参照渡しはどうなるのでしょうか?<?php class Person { public $name; public $age; } // 将对象类型的数据 赋值 给一个变量 $p = new Person; // 通过对属性修改值,来确定面向对象中 对象的传值方式 $p->name = 'jesse'; // 将对象赋予另一变量 $m = &$p; // 另一变量修改属性值 $m->name = 'Marry'; // 输出源变量 赋值变量访问内部属性的结果 echo $p->name, $m->name; ?>
以上がPHPでのオブジェクト値の転送方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。