0

一个非常简单的问题,我想知道 php 如何处理 IF 和 AND 的使用。

假设我有以下 php 代码:

if ((pony) && (pony == 2)) {
  /* do something */
}

如果 pony 等于 0,代码是否仍会检查 pony 是否等于 2 还是会停在那里?

4

3 回答 3

3

不会。布尔运算符表现出短路行为。换句话说,一旦 PHP 知道整个表达式的结果,它就会停止计算。

请参阅有关逻辑运算符的 PHP 文档。

于 2012-11-16T04:17:13.363 回答
1

@Jonathon Reinhart是正确的,同时您必须认识到您不需要在使用前创建变量。

话虽如此,这将起作用:

if ($pony && $pony == 2) {
  /* do something */
}

虽然,在 PHP 中使用严格的错误,您需要确保(在您的情况下)该变量pony是使用isset()定义的。

if (isset($pony) && $pony == 2) {
  /* do something */
}
于 2012-11-16T04:24:44.567 回答
0

首先,使用$来定义变量..

$pony = 0;

if (($pony) && ($pony == 2)) {
  echo "yeah";
}
/* false */

如果您更改 $pony = 2; 的值,该值将为 true;从逻辑上讲,在第一个条件下没有进行任何测试,甚至不是一个条件。

if($pony){
}

如果您将条件更改为... $pony 必须同时为 0 和 2 是不可能的

if (($pony == 0) && ($pony == 2)) {
  echo "yeah";
}

如果您尝试检查 $pony 是否有值,请参阅 Samuel Cook 的回答 isset

if (isset($pony) && $pony == 2) {
  /* do something */
}
/* does $pony has a value/initiated AND its value must be 2 */
于 2012-11-16T04:26:31.817 回答