php运算符的短路特性

news/2024/11/24 11:26:19/

php运算符的短路特性

1、逻辑运算符:逻辑与(&&)和逻辑或(||),存在着短路特性

PHP中有以下两个运算符具有短路的特性,他们是逻辑运算符的逻辑与(&&)和逻辑或(||),存在着短路这一特性。

逻辑或,一真为真,假假为假(一真返回,全假跳过不返回)

$a = 1;
$flag = ($a == 1 || $c = 100); echo '$c的值:'.$c.' $flag的值:'.$flag;
//输出 $c的值: $flag的值:1(true隐式转换为字符串1)

逻辑或的运算结果是运算符(||)的两边 只要有一个为真,结果就返回“真”后就不再执行其它表达式 ,所以在这个语句里已经判断到 a 的返回值是“真”,就不再执行给 a的返回值是“真”,就不再执行给 a的返回值是,就不再执行给c赋值,这样就形成了一个短路现象,所以后面的输出语句不输出内容。

逻辑与,真真为真,一假为假(全真返回,一假跳过不返回)

$a = 1;
$a == 2 && $c=100; echo '$c的值:'.$c.' $flag的值:'.$flag;
//输出 $c的值: $flag的值:(flase隐式转换为空字符串)

逻辑与的运算符(&&),逻辑与的运算方式是运算符的 两边表达式都为“真”才会继续执行其他语句而直接返回一个“假”值,所以这条语句也将不执行$c的赋值。

2、按位运算符:按位与(&)和按位或(|),不存在短路特性

按位运算符:按位与(&)和按位或(|),这两个运算符不存在短路特性,虽然它们的运算方式和逻辑与及逻辑或的运算方式相似,但他们没有存在短路现象,因为 按位与它是参加运算的表达式的同位运算都为1时才返回1否则返回0,按位或是同位运算不相同时返回1否则返回0。

按位或,同位运算不相同时返回1否则返回0(按位的“位”是二进制)

$a = 1;
$flag1 = ($a == 1 | $c = 100); // 1 | 110 0100 = 110 0101echo '$c的值:'.$c.' $flag1的值:'.$flag1.' $flag2的值:'.$flag2;
//输出 $c的值:100 $flag1的值:101 $flag2的值:100

按位与,同位运算都为1时才返回1否则返回0(按位的“位”是二进制)

$a = 1;
$flag1 = ($a == 1 & $c = 100); // 1 & 110 0100 = 0
$flag2 = ($a == 2 & $c = 100); // 0 & 110 0100 = 0
$flag3 = (1 & 1); // 1 & 1 = 1
$flag4 = (12 & 12); // 110 0110 & 110 0110 = 110 0110
$flag5 = (12 & 13); // 110 0110 & 110 0111 = 110 0110
$flag6 = (13 & 12); // 110 0111 & 110 0110 = 110 0110echo '$c的值:'.$c.' $flag1的值:'.$flag1.' $flag2的值:'.$flag2.' $flag3的值:'.$flag3.' $flag4的值:'.$flag4.' $flag5的值:'.$flag5.' $flag6的值:'.$flag6;
//输出 $c的值:100 $flag1的值:0 $flag2的值:0 $flag3的值:1 $flag4的值:12 $flag5的值:12 $flag6的值:12

3、短路特性在判断语句中的应用

由于有了运算符的短路特性,我们可以 利用这一特性来编写一些判断语句,这样可以增加了程序的灵活性 ,例如我们可以使用在 打开一个文件时进行判断

$file = fopen('a.txt','r') or die('文件不存在。');  

通过这样设置了逻辑或运算符短路,这样就可以完成判断一个文件是否存在。die()命令是结束整个文件的执行,如果 程序运行到有die()时就结束了程序的运行 ,不再去执行该页面里的其他代码,输出错误提示。


http://www.ppmy.cn/news/1001414.html

相关文章

C++ MQTT客户端

下面是一个简单的ROS节点的C MQTT客户端的示例,包括.h和.cpp文件。 很抱歉,我之前提供的代码中似乎有一些错误。下面是更新后的代码,修复了mqtt命名空间中disconnect_response的问题: mqtt_client.h: #ifndef MQTT_…

VR虚拟仿真技术在道路桥梁中有哪些具体应用?

虚拟现实(VR)是一种新兴的技术,可以为桥梁工程提供许多应用场景。以下是一些可能的应用场景: 1.桥梁设计和模拟 VR元宇宙可以用于桥梁的设计和模拟。工程师可以使用VR技术来创建桥梁的三维模型,并对其进行测试和优化。这可以帮助工程师更好地…

排查管家婆财务试算不平衡

总账的财务期初试算不平衡,就会导致不能成功开账。当分销A\V系列总账版本软件中出现试算不平衡的情况,应该如何排查?请按照下面的排查步骤操作吧。 PART.01 期初建账-账务期初,币种选择【综合本位币】,点下面的【试算…

微信小程序使用editor富文本编辑器 以及回显 全屏弹窗的模式

<!--富文本接收的位置--><view class"white-box"><view class"title"><view class"yellow-fence"></view><view class"v1">教研记录</view></view><view class"add-btn"…

测试工程师与研发工程师之间的差别

目录 为什么要讨论二者的差别? 测试工程师的分类 测试工程师与研发工程师之间的差别

Linux C 获取主机网卡名及 IP 的几种方法

在进行 Linux 网络编程时&#xff0c;经常会需要获取本机 IP 地址&#xff0c;除了常规的读取配置文件外&#xff0c;本文罗列几种个人所知的编程常用方法&#xff0c;仅供参考&#xff0c;如有错误请指出。 方法一&#xff1a;使用 ioctl() 获取本地 IP 地址 Linux 下可以使用…

【Spring Boot】请求参数传json数组,后端采用(pojo)新增案例(103)

请求参数传json数组&#xff0c;后端采用&#xff08;pojo&#xff09;接收的前提条件&#xff1a; 1.pom.xml文件加入坐标依赖&#xff1a;jackson-databind 2.Spring Boot 的启动类加注解&#xff1a;EnableWebMvc 3.Spring Boot 的Controller接受参数采用&#xff1a;Reque…

django使用ztree实现树状结构效果,子节点实现动态加载(l懒加载)

一、实现的效果 由于最近项目中需要实现树状结构的效果,考虑到ztree这个组件大家用的比较多,因此打算在django项目中集成ztree来实现树状的效果。最终实现的示例效果如下: 点击父节点,如果有子节点,则从后台动态请求数据,然后显示出子节点的数据。 二、实现思路 …