PHP:返回if(){}的一部分

时间:2020-03-06 14:25:53  来源:igfitidea点击:

假设我有以下代码:

if (md5($_POST[$foo['bar']]) == $somemd5) {
  doSomethingWith(md5($_POST[$foo['bar']]);
}

我可以通过以下方法缩短时间:

$value = md5($_POST[$foo['bar']];
if ($value == $somemd5) {
  doSomethingWith($value);
}

但是,是否存在任何包含当前条件的第一个或者第二个条件的预设变量?例如:

if (md5($_POST[$foo['bar']]) == $somemd5) {
  doSomethingWith($if1);
}

这样做可能是不必要的方式,但我只是想知道。

解决方案

不可以,但是由于赋值本身是一个表达式,因此可以将赋值用作if语句的条件表达式。

if (($value = md5(..)) == $somemd5) { ... }

通常,尽管如此,我们将避免将赋值嵌入条件表达式中:

  • 该代码更密集,因此更难以阅读,并带有更多的嵌套括号。
  • 在同一个表达式中混合=和==只是要求它们混在一起。

由于if仅使用表达式的结果,因此无法访问它的一部分。
只需将函数的结果存储在变量中即可,就像我们在第二段代码中所写的一样。

恕我直言,第二个示例(如果有人编辑问题,请在下面引用)就可以了。我们可以通过一些技巧来使代码晦涩难懂,但是对我来说,这是最好的。在更复杂的情况下,此建议可能不适用。

$value = md5($_POST[foo['bar']];
  
  if ($value) == $somemd5) {

 doSomethingWith($value);

  
  }