前几天我读到在if语句中分配值并不是一个好主意.说实话,我实际上使用了很多,例如
if(isset($_POST) && $post = $_POST) {
print_r($post)
}
Run Code Online (Sandbox Code Playgroud)
知道为什么那不是最优的吗?
Mar*_*ker 15
尤其是因为忘记赋值和相等运算符不同是一个常见的新手错误,因此它很容易导致混淆或难以检测的错误.
代码的可读性比任何微优化都重要
好吧,单独来看,逻辑运算符中的赋值并没有那么糟糕:
if ($id = $_GET['id']) {
Run Code Online (Sandbox Code Playgroud)
或者
while($row = mysql_fetch_assoc($res)) {
Run Code Online (Sandbox Code Playgroud)
我们经常使用。
尽管它仍然面临可读性错误或混合 =和==操作符的危险。
但是在一个语句中混合逻辑和赋值运算符是不好的。这称为混淆和 Perl 只写样式,使阅读此代码变得更加困难。
所以,最好写成
if(isset($_POST)) {
$post = $_POST;
print_r($post);
}
Run Code Online (Sandbox Code Playgroud)
尽管这种特殊的说法是毫无意义的。
$_POST 始终在任何合理的环境中设置,并将其分配给另一个大多数时候不必要的变量