这个条件逻辑可以在PHP中工作吗?

时间:2011-08-30 16:55:00

标签: php if-statement

我今天遇到了一些代码,其中字符串同时与两个值进行比较。我以前从未见过这个 - 这会有用吗?有人可以向我解释一下吗?

$foo = 'date';

if ($foo == ('date' || 'datetime')) {
  echo "Hello world";
}

4 个答案:

答案 0 :(得分:3)

那不行。写if ($foo == 'date' || $foo == 'datetime')

||不仅不会从集合中进行选择,而且使用使用单个=,这是用于分配而不是比较。

在这种情况下,使用布尔值或运算符比较常量字符串。为此,它们都被转换为布尔值。由于它们是非空字符串,因此它们评估为true。 true或true返回true,分配给$foo ,与$ foo进行比较。如果$ foo是'date'或'datetime'或任何其他非空字符串,则该比较将始终为真。

所以,无论$ foo的先前值是什么,或者甚至根本没有分配它,if-expression总是求值为true,所以你总是得到回声,$ foo总是{{1之后。

答案 1 :(得分:3)

这不起作用。 ('date' || 'datetime')始终评估为true

请改用:

$foo = 'date';

if ($foo == 'date' || $foo == 'datetime') {
  echo "Hello world";
}

答案 2 :(得分:1)

您可以尝试以下方法:

$haystack = array("date","datetime");
$needle = "date";

if (in_array($needle,$haystack)) {
    // do something
}

答案 3 :(得分:0)

没有。 ||OR运算符仅适用于布尔值。你需要这个条件:

if ($foo == 'date' || $foo == 'datetime') { ... }

但是如果你有10个可能值呢?你需要一个吗?是和否。

另一种可能性是将所有可能的值插入数组,并使用in_array()检查您的值是否可以通过将其与该数组进行比较:

$possible_values = array('date', 'datetime');
if (in_array($foo, $possible_values)) { ... }