PHP中的等于号 = 就是赋值运算符。
$sum = 1 + 2;
这个例子的正确解读方式是将表达式 1 + 2 的值赋值给等于号左边的 $sum 变量,而不是说 $sum 等于 1 + 2。
赋值运算符可以配合算术运算符组合在一起应用。
// 定义变量 a = 10 , b = 5
$a = ($b = 5) + 5;
// 加减乘除
// $a = $a + $b
$a += $b;
// $a = $a - $b
$a -= $b;
// $a = $a * $b
$a *= $b;
// $a = $a / $b
$a /= $b;
// 取模
$a %= $b;
// 次幂
$a **= $b;
// 拼接字符串 返回 "105"
$a .= $b
赋值运算符一般是通过 传值赋值 的形式进行,也就是将等于号右边表达式的结果克隆一份给左边的变量,而这其中有一个例外是对象的赋值,默认便是 引用赋值,除非明确的使用 clone 关键字来拷贝。
// 普通变量
$foo = "abc";
$bar = $foo;
// 修改其值
$foo = "xyz";
// 输出 abc
echo $bar;
// 定义类
class Example{
public $foobar = "iGuoji";
}
// 实例化
$exam = new Example();
// 输出 iGuoji
echo $exam->foobar . '<br />';
// 赋值
$temp = $exam;
// 输出 iGuoji
echo $temp->foobar . '<br />';
// 克隆
$hello = clone $exam;
// 输出 iGuoji
echo $hello->foobar . '<br />';
// 修改实例的属性
$exam->foobar = "Laravel";
// 输出 Laravel
echo $temp->foobar . '<br />';
// 还是输出 iGuoji
echo $hello->foobar . '<br />';
PHP支持显示的引用赋值,只需要使用&符号即可。
// 普通变量
$foo = "abc";
$bar = &$foo;
// 修改其值
$foo = "xyz";
// 输出 xyz
echo $bar;
需要注意的是,PHP里new运算符自动返回一个引用结果,如果再次对new使用引用,将会报错。