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
相關文章
- 給物件引用變數賦值(轉)物件變數賦值
- 變數的賦值 指標間接賦值變數賦值指標
- php變數賦值給jsPHP變數賦值JS
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- javascript變數賦值或者重新賦值注意事項JavaScript變數賦值
- JAVA 物件引用,以及物件賦值Java物件賦值
- 物件屬性值賦給變數物件變數
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- 變數的解構賦值變數賦值
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- 物件賦值轉換物件賦值
- 深入理解PHP中賦值與引用PHP賦值
- shell 變數賦值問題變數賦值
- shell變數命名與賦值變數賦值
- python 多變數賦值Python變數賦值
- java裡面給物件賦值,慎用賦值符號(=) (轉)Java物件賦值符號
- php 自增賦值PHP賦值
- 【c++】深賦值與淺賦值C++賦值
- 問題分享:Js引用型別賦值JS型別賦值
- 從賦值看基本型別和引用型別的區別賦值型別
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- JavaScript 之物件拷貝與賦值JavaScript物件賦值
- (12)非阻塞賦值與阻塞賦值區別(以簡單例子說明)賦值單例
- JavaScript 物件解構賦值JavaScript物件賦值
- ES6之變數的解構賦值變數賦值
- 複製物件重新賦值不改變原物件物件賦值
- shell中變數的取值與賦值變數賦值
- 再說mysql中的變數賦值MySql變數賦值
- Verilog連續賦值、過程賦值、過程連續賦值總結賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用SELECT INTO賦值SQL變數賦值
- c#小灶——常量、變數和賦值C#變數賦值
- AC-DMIS 5.3 V變數賦值變數賦值
- JS中的變數賦值深入理解JS變數賦值
- go語言變數的宣告與賦值Go變數賦值
- 自己對Java中if變數賦值的理解Java變數賦值
- ES6:變數的解構賦值變數賦值
- ES6:變數的結構賦值變數賦值