> 백엔드 개발 > PHP 튜토리얼 > php逻辑操作符中&跟&&的异同

php逻辑操作符中&跟&&的异同

WBOY
풀어 주다: 2016-06-13 12:54:58
원래의
1008명이 탐색했습니다.

php逻辑操作符中&和&&的异同


php有5种算术操作符(+ - * / %),6种赋值操作符(+= -= *= /= %= .=),8种比较操作符(=== = != !==),6种的逻辑操作符(如&&、 ||、 &、 |、 ! 。其中逻辑与&可写成and,逻辑或|写成or),以及一些其他操作符(错误控制操作符@、 执行操作符反引号"--不是单引号、字符串操作符.与.=、递增/递减操作符++/--、三元操作符?:)。

关于操作符优先级,可以参考相关文档。


php中&和&&的异同

<?php $a=10;
if($a>4 && (++$a>10))
{
}
//输出结果为11.
echo $a;
?>

<?php $a=10;
if($a>4 and (++$a>10))
{
}
//输出结果为11.
echo $a;
?>

**************************************************************

<?php $a=10;
if($a>4 && (++$a

<?php $a=10;
if($a>4 & (++$a

*********************************************************

<?php $a=10;
if($a<4 && (++$a>10))
{
}
//输出结果为10.
echo $a;
?>

<?php $a=10;
if($a<4 & (++$a>10))
{
}
//输出结果为11.
echo $a;
?>

*******************************************************************

<?php $a=10;
if($a<4 && (++$a<10))
{
}
//输出结果为10.
echo $a;
?>

<?php $a=10;
if($a<4 & (++$a<10))
{
}
//输出结果为11.
echo $a;
?>

*******************************************************************

<?php // 下面的 sktest() 不被调用,原因是它们被运算符“短路”。
$a = (false && sktest());
$b = (true  || sktest());
$c = (false and sktest());
$d = (true  or  sktest());

// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 true
$f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]
var_dump($e, $f);

// "&&" 的优先级比 "and" 高
$g = true && false; // $g 被赋值为 (true && false),结果为 false
$h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]
var_dump($g, $h);

?>
로그인 후 복사


表达式一$a && $b ,表达式二$a & $b

1、相同点:两个表达式都是当$a、$b都为true时,表达式为真。两种运算符对此表达式结果没有影响。

2、不同点:表达式$a && $b中&&前面的$a为false时,已确定表达式为假,此时逻辑操作符&&后的$b不再进行计算,即所谓的被运算符“短路”了。而对于表达式$a & $b,不论&前的$a真假,表达式后的$b依然要进行计算。逻辑操作符后的$b是否被运行,可能影响到后面的数据和程序结果。

对于逻辑操作符||和|,异同同上。



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿