// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;
// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;
<html>
<head>
<title>Logical</title>
</head>
<body>
<?php
$a = 10;
$b = 20;
if ($a>$b)
{
echo " A is Greater";
}
elseif ($a<$b)
{
echo " A is lesser";
}
else
{
echo "A and B are equal";
}
?>
<?php
$c = 30;
$d = 40;
//if (($a<$c) AND ($b<$d))
if (($a<$c) && ($b<$d))
{
echo "A and B are larger";
}
if (isset($d))
$d = 100;
echo $d;
unset($d);
?>
<?php
$var1 = 2;
switch($var1)
{
case 1: echo "var1 is 1";
break;
case 2: echo "var1 is 2";
break;
case 3: echo "var1 is 3";
break;
default: echo "var1 is unknown";
}
?>
</body>
</html>
9条答案
按热度按时间c9qzyr3d1#
没有“更好”,但更常见的是
||
。他们有不同的precedence和||
会像人们通常期望的那样工作。另请参阅:Logical operators(* 以下示例取自此处 *):
sulc1iza2#
它们用于不同的目的,实际上具有不同的运算符优先级。
&&
和||
运算符用于布尔条件,而and
和or
用于控制流。例如,以下是布尔条件:
这与控制流不同:
oxalkeyp3#
区别分别||和OR和&&和AND是operator precedence:
x1月0n1x日
($bool = (FALSE || TRUE))
$bool
的值为TRUE
$bool = FALSE OR TRUE;
(($bool = FALSE) OR TRUE)
$bool
的值为FALSE
$bool = TRUE && FALSE;
($bool = (TRUE && FALSE))
$bool
的值为FALSE
$bool = TRUE AND FALSE;
(($bool = TRUE) AND FALSE)
$bool
的值为TRUE
93ze6v8z4#
来源:http://wallstreetdeveloper.com/php-logical-operators/
以下是使用逻辑运算符的示例代码:
r8uurelv5#
我知道这是一个老主题,但仍然。我刚刚遇到的问题,我在工作中调试的代码,也许有人可能有类似的问题...
假设代码如下所示:
你可能会认为(就像你习惯于从javascript中看到的那样)当$this-〉positions()返回false或null时,$positions是空数组,但事实并非如此,值是TRUE还是FALSE取决于$this-〉positions()返回的值。
如果你需要得到$this-〉positions()的值或者空数组,你必须用途:
编辑:
上面的例子没有按预期工作,但事实是
||
和or
并不相同...试试这个:这就是结果:
所以,当你想设置返回值或空数组时,第三个选项
?:
是正确的解决方案。使用PHP 7.2.1进行测试
vxbzzdmp6#
我并不认为一个本质上比另一个更好,但我建议坚持使用||因为它是大多数语言的默认值。
编辑:正如其他人所指出的,两者确实有区别。
0s0u357o7#
没有好坏之分,只是取决于运算符的优先级。由于
||
的优先级高于or
,所以||
被使用得最多。hlswsv358#
来源:https://codedtag.com/php/php-or-operator/
x0fgdtte9#
一些语言使用short-circuit,而另一些语言使用完全布尔求值(如果您知道,这类似于Pascal中的指令
$B
)。说明:
在本例中,函数
B()
永远不会被执行。因为函数A()
返回TRUE,所以OR语句的结果从第一部分就可以知道,而不必计算表达式的第二部分。但是,对于
( A() || B() )
,无论第一部分的值如何,始终计算第二部分。对于优化的编程,您应该始终使用
OR
,这样速度更快(第一部分返回false
,而第二部分实际上需要求值的情况除外)。