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); }