變數賦值時的,多個變數連等的問題

2022-03-18 23:59:41 字數 1576 閱讀 8136

如果有這麼一段**:

$a = $b = $c

請問:上面的賦值語句的執行順序是

1、$c 的值先賦值給$b,然後再將$b的值賦值給$a

2、$c 的值先賦值給$b,然後再將$c賦值給$a

3、$a 和 $b 是指向同乙個變數,還是只是乙個副本

<?php

class a

$a = $b = new a();

$c = new a();

var_dump($a);//object(a)#1 (1)

var_dump($b);//object(a)#1 (1)

var_dump($c);//object(a)#2 (1)

$a->name = "aaaaa";

echo $a->name."\n";//aaaaa

echo $b->name."\n";//aaaaa

echo $c->name."\n";//輸出為空

?>

上面的例子中,講乙個新建立的物件利用連等的特性,同時給兩個變數賦值,最終這兩個變數都指向同乙個物件,這個結論通過var_dump就可以確定,後面的例子中也是通過訪問給物件的屬性賦值再訪問的形式來證明了。

普通變數(number)

<?php

$b = 2;

$a = $b = 5;

echo $a."\n";//5

echo $b."\n"; //5

$b = 11;

echo $a;//5

?>

字串(string)

<?php

$stra = $strb = "hello world";

$stra .= "yes";

echo $stra."\n";//hello worldyes

echo $strb."\n";//hello world

?>

陣列(array)

<?php

$arra = $arrb = array("hello","world");

unset( $arra[0] );

$arrb[3] = "yes";

print_r( $arra );//array ( [1] => world )

print_r( $arrb );//array ( [0] => hello [1] => world [3] => yes )

?>

從上面幾個例子中可以看出,在php中,多個變數使用連等時:

除了值為物件,是「傳引用」,多個變數指向同乙個物件,改變其中乙個,其他的指向該物件的變數內部的值也會改變

而其型別的賦值都是「傳值」,多個變數只是值相同,彼此間並無其他關聯

變數的賦值

變數就是儲存可變資料的容器,在php中變數是由 符號和變數名組成,其中變數名的命名規則和識別符號相同 1.變數的賦值 由於php是一種弱語言,變數不需要事先宣告就可以直接進行賦值使用。為此php提供了兩種變數賦值方式 傳值賦值,引用賦值 1 傳值賦值 變數預設總是傳值賦值,將 右邊的資料賦值給左邊的...

變數的賦值

變數名 一經宣告就不可以改變 值是可以改變的 var student wangjairu 給student 重新賦值 以最後一次賦值為主 的作用 賦值 student uangyuchuan 使用變數就近原則 console.log student student 劉浩 變數作用 儲存資料 變數的使...

PHP變數引用賦值與變數賦值變數的區別

變數預設總是傳值賦值。那也就是說,當將乙個表示式的值賦予乙個變數時,整個原始表示式的值被賦值到目標變數。這意味著,例如,當乙個變數的值賦予另外乙個變數時,改變其中乙個變數的值,將不會影響到另外乙個變數。有關這種型別的賦值操作,請參閱表示式一章。foo abc b foo b my name is b...