少用但始终都会碰到 - 一个等号的表达式

  • 作者:KK

  • 发表日期:2017.3.9


在if里使用

if($a = 9){
	echo $a; // 9
}

注意它是先赋值给a然后再判断if($a)

只要表达式里有1个等号的话,就会优先赋值

这个用法不是很常见,但是也会在各种项目或开源项目/框架里看得到,如果像上面这么单纯的逻辑还是比较老司机多这样用的

实应用是这样的:

if($row = $db->update(xxx)){
	echo '成功更新' . $row . '行数据';
}else{
	echo '更新失败';
}

//相当于这样:
$row = $db->update(xxx);
if($row){
	echo '成功更新' . $row . '行数据';
}else{
	echo '更新失败';
}
  • 注意:不要用在复杂的表达式里面,最好只用在像上面这样只要判断单个变量的情况下,否则容易踩坑把判断逻辑搞乱

在传值里使用

$len = strlen($str = 'abc');
echo $len; // 3

一样的道理,赋值表达式先被运行了,$str的值是3个字符串,接下来就变成了strlen($str)于是得到了3