PHP - 在if语句中分配值

时间:2010-07-12 09:35:09

标签: php

我前几天读到在if语句中分配值并不是一个好主意。 说实话,我实际上使用了这么多,例如。

if(isset($_POST) && $post = $_POST) {
  print_r($post)
}

知道为什么不是最佳的吗?

4 个答案:

答案 0 :(得分:14)

尤其是因为忘记赋值和相等运算符不同是一个常见的新手错误,因此很容易导致混淆或难以检测的错误。

您的代码的可读性比任何微优化更重要

答案 1 :(得分:9)

因为它不是最优的,它是关于标准,惯例,条件需要比较而不是分配。

不要造成混乱,Noobs可能会花几个小时调试问题!

答案 2 :(得分:4)

如果您误将$post == $_POST误认为$post = $_POST,可能会让读者感到困惑。 一般来说,它并没有真正提高代码的可读性...... 此外,通常没有必要用“if”

检查作业

答案 3 :(得分:4)

好吧,独自一人,逻辑运算符中的赋值并不是那么糟糕:

if ($id = $_GET['id']) {

while($row = mysql_fetch_assoc($res)) {
我们经常使用。
虽然它仍然存在可读性错误或混合===运算符的危险。

但是在一个语句中混合逻辑运算符和赋值运算符是不好的。这称为混淆和perl只写样式,使得阅读此代码更加困难。

所以,最好写成

if(isset($_POST)) {
  $post = $_POST;
  print_r($post);
}
虽然这个特别的陈述是毫无意义的 $ _POST始终设置在任何合理的环境中,并将其分配给大多数时间不必要的另一个变量