PHP:使用if时可能没有设置第二个条件

时间:2012-11-16 04:16:10

标签: php

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

说我有以下PHP代码:

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

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

3 个答案:

答案 0 :(得分:3)

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

请参阅Logical Operators上的PHP文档。

答案 1 :(得分:1)

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

据说这会起作用:

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

虽然在PHP中使用strict错误,但您需要确保(在您的情况下)使用isset()定义变量pony

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

答案 2 :(得分: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 */