少用但始终都会碰到 - 一个等号的表达式 ¶
作者: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