php之普通變數賦值、物件賦值、引用賦值的區別
php中變數賦值預設是賦值傳遞,但是物件型別比較特殊,預設是引用傳遞
這涉及到php的深複製和淺複製,有興趣的可以看看
1. 原始型別 – 直接賦值
$name1 = 'sky';
$name2 = $name1;
$name2 = 'fly';
echo $name1.' '.$name2; //sky fly
2. 陣列array – 直接賦值
$arr1 = array(0, 1, 2, 3);
$arr2 = $arr1;
$arr2[0] = 6;
echo $arr1[0].' '.$arr2[0]; //0 6
3. class類 – 記憶體地址
class Person{
public $name = 'sky';
public $age = 14;
}
$person1 = new Person();
$person2 = $person1;
$person2->name = 'moon';
echo $person1->name.' '.$person2->name; //moon moon
可以看出,物件賦值預設採用的是引用賦值
4. php中規定,使用『&』符號,可以將普通賦值改成記憶體地址,看下面程式碼
$name1 = 'sky';
$name2 = &$name1; //&符號的使用
$name2 = 'fly';
echo $name1.' '.$name2; //fly fly
相關文章
- 變數的賦值 指標間接賦值變數賦值指標
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- 物件屬性值賦給變數物件變數
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- 變數的解構賦值變數賦值
- 物件賦值轉換物件賦值
- php 自增賦值PHP賦值
- shell變數命名與賦值變數賦值
- shell 變數賦值問題變數賦值
- 問題分享:Js引用型別賦值JS型別賦值
- 從賦值看基本型別和引用型別的區別賦值型別
- (12)非阻塞賦值與阻塞賦值區別(以簡單例子說明)賦值單例
- 複製物件重新賦值不改變原物件物件賦值
- JavaScript 物件解構賦值JavaScript物件賦值
- ES6之變數的解構賦值變數賦值
- Verilog連續賦值、過程賦值、過程連續賦值總結賦值
- Python - 物件賦值、淺拷貝、深拷貝的區別Python物件賦值
- c#小灶——常量、變數和賦值C#變數賦值
- AC-DMIS 5.3 V變數賦值變數賦值
- go語言變數的宣告與賦值Go變數賦值
- JS中的變數賦值深入理解JS變數賦值
- 自己對Java中if變數賦值的理解Java變數賦值
- ES6:變數的結構賦值變數賦值
- 解構賦值賦值
- ES6入門之變數的解構賦值變數賦值
- web中,利用反射給物件賦值Web反射物件賦值
- vue 變數賦值同時改變的問題Vue變數賦值
- 列表切片賦值給另一個變數賦值變數
- ES6 - 變數的解構賦值解析變數賦值
- 淺談Python變數賦值的三種方法!Python變數賦值
- ECMAScript 6入門 - 變數的解構賦值變數賦值
- Python 中變數賦值傳遞時的引用和複製介紹Python變數賦值
- jquery取值和賦值(包含部分是原生js的取值和賦值)jQuery賦值JS
- vue物件拷貝,解決由於引用賦值修改原物件的方法Vue物件賦值
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- ES6 -- 變數的解構賦值的用途變數賦值
- JS解構賦值JS賦值