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

PHP:返回if(){}的一部分,php,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($_POS

假设我有以下代码:

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

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

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

if (($value = md5(..)) == $somemd5) { ... } 如果($value=md5(..)==$somemd5{…} 但是,一般来说,您希望避免将赋值嵌入条件表达式:

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

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

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

$value=md5($_POST[foo['bar']]

如果($value)=$somemd5){

}


虽然这样做并没有什么好处,只会让阅读变得更复杂。几乎没有捷径。这不是一个。所以我不应该这样做,托比特?我同意这不完全是“最佳实践”,但我觉得问题末尾的免责声明“可能没有必要……我只是想知道”,给了我一些余地。在大多数情况下,你会想用你的第二个例子。什么是
foo
,打字错误?你是说
$foo
?@ColeJohnson你是对的,我是说
$foo
 doSomethingWith($value);