假设我有这段代码:
if (md5($_POST[$foo['bar']]) == $somemd5) {
doSomethingWith(md5($_POST[$foo['bar']]);
}
我可以通过以下方式缩短这一点:
$value = md5($_POST[$foo['bar']];
if ($value == $somemd5) {
doSomethingWith($value);
}
但是,是否有任何包含当前if的第一个或第二个条件的预设变量?比如:
if (md5($_POST[$foo['bar']]) == $somemd5) {
doSomethingWith($if1);
}
这可能是一种不必要的方式,但我只是想知道。
答案 0 :(得分:7)
不,但由于赋值本身是一个表达式,您可以将赋值用作if语句的条件表达式。
if (($value = md5(..)) == $somemd5) { ... }
但是,一般情况下,您需要避免将赋值嵌入条件表达式中:
答案 1 :(得分:1)
由于if只是使用表达式的结果,因此无法访问其中的部分内容。 只需将函数的结果存储在变量中,就像您在第二个代码段中所写的那样。
答案 2 :(得分:1)
恕我直言,你的第二个例子(如果有人编辑这个问题,引用下面的内容)就可以了。你可以用一些技巧来模糊代码,但对我来说这是最好的。在更复杂的情况下,这个建议可能不适用。
$ value = md5($ _ POST [foo ['bar']];
if($ value)== $ somemd5){
doSomethingWith($value);
}