关键词 1,传递赋值 2,引用赋值 通俗解答 1,传递赋值,创建二个变量$a $b 把$a的值传递给$b 如果$a的值发生变化在下一次输出的时候$a得值发生改变,$b还是$a第一次的赋值,因为传递赋值…
关键词
1,传递赋值 2,引用赋值
通俗解答
1,传递赋值,创建二个变量$a $b 把$a的值传递给$b 如果$a的值发生变化在下一次输出的时候$a得值发生改变,$b还是$a第一次的赋值,因为传递赋值值会存在内存当中
2,引用赋值 创建二个变量$a $b 把$a的值传递给$b 如果$a的值发生改变那么$b也会改变
传递赋值例子
$a=123; $b=$a;
var_dump($a);
var_dump($b);
输出结果为:123 123
$a=321;
var_dump($a);
var_dump($b);
输出结果为:321 123
引用赋值例子
$a=123; $b=&$a;
var_dump($a);
var_dump($b);
输出结果为:123 123
$a=321;
var_dump($a);
var_dump($b);
输出结果为:123 123
面向对象传递赋值
<?php class jiub { public $str=123; } $obj = new jiub(); $a=$obj; var_dump($a); echo "<br/>"; var_dump($obj); $obj->str=321; echo "<br/>"; var_dump($a); echo "<br/>"; var_dump($obj); $obj=456; echo "<br/>"; var_dump($a); echo "<br/>"; var_dump($obj);?>
按照传递赋值 前面二组输出结果为123 123 321 123 但是php面向对象中
传递赋值的是$标识符 所以正确的输出结果是123 123 321 321
第三组赋值时直接赋值给$obj 所以第三组输出结果为:321 456
面向对象引用赋值
<?php class jiub { public $str=123; } $obj = new jiub(); $a=&$obj; var_dump($a); echo "<br/>"; var_dump($obj); $obj->str=321; echo "<br/>"; var_dump($a); echo "<br/>"; var_dump($obj); $obj=456; echo "<br/>"; var_dump($a); echo "<br/>"; var_dump($obj);?>
输出结果为:123 123 321 321 456 456