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

时间:2008-09-19 13:25:41

标签: php

假设我有这段代码:

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

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

3 个答案:

答案 0 :(得分:7)

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

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

但是,一般情况下,您需要避免将赋值嵌入条件表达式中:

  • 代码更密集,因此更难以阅读,使用更多嵌套括号。
  • 在同一个表达式中混合=和==只是要求他们混淆。

答案 1 :(得分:1)

由于if只是使用表达式的结果,因此无法访问其中的部分内容。 只需将函数的结果存储在变量中,就像您在第二个代码段中所写的那样。

答案 2 :(得分:1)

恕我直言,你的第二个例子(如果有人编辑这个问题,引用下面的内容)就可以了。你可以用一些技巧来模糊代码,但对我来说这是最好的。在更复杂的情况下,这个建议可能不适用。

  

$ value = md5($ _ POST [foo ['bar']];

     

if($ value)== $ somemd5){

 doSomethingWith($value);
     

}