php基础语法之逻辑运算

逻辑运算符比较简单,是我们人类进行逻辑思考时的一种方式。

讲出很多吊丝男士的心愿:某一个女人,要不长得漂亮、要不比我有钱我就娶她。如果一个条件都没有,那就算了。

上面的这种不评价好坏的心理状态,只是来说明这就是典型的计算机思维。

美丽这个条件成立(true) 或者 财富这个条件成立(true),则执行娶她的行为和动作。否则,就不娶这个女孩。

那我们把这些逻辑关于进行了归纳和总结,下面表格中的:$x为条件一,$y 为条件二。进行说明:

逻辑与,中文解释为并且。可理解为,$x 并且 $y 都为真(true)的时候执行。

逻辑或,中文解释为或者。可以理解为,$x或者$y其中一个为真(true)的时候执行。

逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。

逻辑异或,如果$x和$y相同则为false,不相同则为true。

举例说明详细说明
$x and $y逻辑与(并且关系)$x 和$y 为真则返回真
$x && $y同上同上
$x or $y逻辑或$x,$y均为false时为假,其他情况全为真
$a||$b同上同上
!$x逻辑非取反,即true变为false,false变为true
$x xor $y逻辑异或相同取false,相异为true

那我们来举几个例子来试试,你自己也要记得多做几次实验(可结合3.4.4这一章中的比较运算符自己写几个例子哟)。

逻辑与:

<?php

$x = true;
$y = false;
//逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间
if($x && $y){
   echo '执行了真区间';
}else{
   echo '执行了假区间';
}
?>

逻辑或:

<?php

$foo = false;
$bar = true;
//逻辑或,有一个为真则为真
if($foo || $bar){
   echo '执行真区间';
}else{
   echo '执行假区间';
}

?>

逻辑非:

<?php

$foo = false;

//逻辑非,把false变为了true
if(!$foo){
   echo '执行真区间';
}else{
   echo '执行假区间';
}

?>

【重点知识】短路

短路就是采用一个懒人模式来思考问题。

逻辑与的特性是:两边为true即为true,其他情况均为假。
逻辑或的特性是:两边为假均为假,其他情况全为真。

我们现在把自己想象成一个懒汉,非常非常懒。来思考逻辑与和逻辑或。可不可以这样理解:
逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。

用代码表示:if($x && $y) 如果$x已经为false了,后面的$y 就没有执行必要了。

逻辑或:前面第一个条件为true了,后面就不用执行了。

用代码表示:if($x || $y) 如果$x已经为true了,后面的$y 就没有执行必要了。

我们写段代码来证明一下:

<?php

$x = false;
$y = 2;
if($x && $y++){
   echo '真';
}else{
   echo '假';
}
//结果还为2,说明没有执行$y++
echo $y;
?>

代码如下,将两个&符改为一个&符试试:

<?php

$x = false;
$y = 2;
if($x & $y++){
   echo '真';
}else{
   echo '假';
}
//再看看结果
echo $y;
?>

我们来看看短路的逻辑或:

<?php

$x = true;
$y = 2;
if($x || $y++){
   echo '真';
}else{
   echo '假';
}
//结果,因为$x已经为true了,肯定执行真区间没有必要执行$y++了
echo $y;
?>

改成一个 | 再看看执行结果

<?php

$x = true;
$y = 2;
if($x | $y++){
   echo '真';
}else{
   echo '假';
}
//自己运行对比结果
echo $y;
?>

通过上例我们知道了&&与&的区别,||和 |的区别。我们也了解了什么是短路。那我们在什么地方可以用到短路呢?有一些奇怪的写法,我们必须了清楚。其实就是基础语法的再应用。
回顾3.3.1最后一段内容:

<?php
//如果为defined('AUTH')存在AUTH常量则为true,不访问后面的exit了。如果为false则执行exit
defined('AUTH') or exit('存在安全因素不准访问');
?>

上面的一段代码就是典型的短路应用的代码


exit 的意思是指在此处停止运行,退出。后面的PHP代码不再执行了。它有两种用法:
1,直接exit; 就是直接退出
2,exit(‘提示内容’),退出的时候还给出一段提示内容

exit
读音:[ˈeksɪt]
解释:退出

继续学习
||
<?php $x = true; $y = 2; if($x | $y++){ echo '真'; }else{ echo '假'; } //自己运行对比结果 echo $y; ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
谢单单

谢单单

通过上例我们知道了&&与&的区别,||和 |的区别。 为何我一脸懵逼

2年前    添加回复 1

回复
″ YoK1ng 丶

″ YoK1ng 丶

四个符号的优先允许从高到低是:&&、||、AND、OR。

4年前    添加回复 1

回复
zx蝈蝈

zx蝈蝈

$$和and,||和or 作用是一样的,只是优先级不一样而已。&&>||>and>or

3年前    添加回复 0

回复
青草地

青草地

PHP的严谨度简直就是开玩笑!!

3年前    添加回复 0

回复

&运算时结果为何为假

[最新 凉伴伴 的回答]自己回答,看下一节【位运算】就明白了,&和|都是数字运算,会先二进制运算再判断$x、$y++转二进制都为0,所以$x & $y++最终结果为0,if(0)----假3转二进制是 11,$x & 3 二进制结果为 011,转十进制是3,if(3)----真

时间:2年前

最后一段这个。是干什么的?

[最新 phpcn_u96260 的回答]应该是个特殊字符,exit后面输出的全是失败的提示信息

时间:3年前

手机用户1609903637

手机用户1609903637

举例 说明 详细说明 $x and $y 逻辑与(并且关系) $x 和$y 为真则返回真 $x && $y 同上 同上 $x or $y 逻辑或 $x,$y均为false时为假,其他情况全为真 $a||$b 同上 同上 !$x 逻辑非 取反,即true变为false,false变为true $x xor $y 逻辑异或 相同取false,相异为true

5天前 0

ᯤApril

ᯤApril

符号&&逻辑与会产生短路, 把它改成&可解决问题。

3个月前 0

知否

知否

运用了两个||后,如果第一个条件存在true,则不执行后面的条件,如,++,相反只运用一个的话,则一样会运行 ++或--的条件

5个月前 0

秋闲独醉

秋闲独醉

&&与&的区别,||和 |的区别

10个月前 0

回忆

回忆

举例 说明 详细说明 $x and $y 逻辑与(并且关系) $x 和$y 为真则返回真 $x && $y 同上 同上 $x or $y 逻辑或 $x,$y均为false时为假,其他情况全为真 $a||$b 同上 同上 !$x 逻辑非 取反,即true变为false,false变为true $x xor $y 逻辑异或 相同取false,相异为true

1年前 0

孤独成瘾

孤独成瘾

逻辑与的特性是:两边为true即为true,其他情况均为假。 逻辑或的特性是:两边为假均为假,其他情况全为真。 短路: 逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。 逻辑或:前面第一个条件为true了,后面就不用执行了。

1年前 0

孤独成瘾

孤独成瘾

$x and $y 逻辑与(并且关系) $x 和$y 为真则返回真 $x && $y 同上 $x or $y 逻辑或 $x,$y均为false时为假,其他情况全为真 $a||$b 同上 !$x 逻辑非 取反,即true变为false,false变为true $x xor $y 逻辑异或 相同取false,相异为true

1年前 0

秋城

秋城

举例 说明 详细说明 $x and $y 逻辑与(并且关系) $x 和$y 为真则返回真 $x && $y 同上 同上 $x or $y 逻辑或 $x,$y均为false时为假,其他情况全为真 $a||$b 同上 同上 !$x 逻辑非 取反,即true变为false,false变为true $x xor $y 逻辑异或 相同取false,相异为true

1年前 0

秋城

秋城

逻辑与,中文解释为并且。可理解为,$x 并且 $y 都为真(true)的时候执行。 逻辑或,中文解释为或者。可以理解为,$x或者$y其中一个为真(true)的时候执行。 逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。 逻辑异或,如果$x和$y相同则为false,不相同则为true。

1年前 0

そ ら༄

そ ら༄

exit 的意思是指在此处停止运行,退出。后面的PHP代码不再执行了。它有两种用法: 1,直接exit; 就是直接退出 2,exit(‘提示内容’),退出的时候还给出一段提示内容

1年前 0

虾吃小米

虾吃小米

f($foo || $bar)逻辑或

1年前 0

妞妞

妞妞

| 无论左边结果是什么,右边还是继续运算; ||当左边为真,右边不再进行运算。 但是两者的结果是一样的。 所以&&和||是比较高效那么一点点。

2年前 0

lyz

lyz

$x&&$y,如果$x已经是假,则不运行判断$y,$x&$y是无论$x是假还是真,都会运行判断$y。||和|的道理类比&&

2年前 0

凉伴伴

凉伴伴

|和&是数学运算,&&和||是逻辑运算,|与&可以看下一节 【位运算】

2年前 0

安克雷特

安克雷特

&和&&不一样,&会继续执行后面的+步骤,&&只要第一个为假,后面就不执行了。

2年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~