PHP中一些易混运算符的比较

0x00 PHP中 =====的区别

===比较两个变量的类型
==只比较他们的值

e.g
比如整数0和浮点数0.0
用==比较返回TRUE
用===比较返回FLASE

用代码测试

<?php 
$str = "0dff";
if (0 == $str) {
    echo "true";
}else{
    echo "false";
}

?>

上面的这个程序的输出结果是true,也就是说在编译中程序默认0和0dff是相等的。
这是因为在执行关系运算”==“时要求运算符两边的数据类型必须一致,所以等号右边的字符串被强制转换为了整型0。这也是一系列弱类型语言的一个缺点。

#在php中提供了“===”来解决这个问题

<?php 
$str = "0dff";
if (0 === $str) {
    echo "true";
}else{
    echo "false";
}

这个程序的输出是false
全等于操作过程如下:
1.判断全等于操作符2边的数据类型是否相同 如果不相同,则返回false
2.判断全等于操作符2边的值是否相等,如果 不相等,则返回false
3.最后将上面2步的操作进行与操作。返回与操作的结果

0x01 PHP中 单引号 ' '双引号 " "的区别

双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。

<?php
$parker = 2; 
echo "parker is $parker";  // parker is 2 
echo 'parker is $parker';   //  parker is $parker

echo "parker is $parker\n"; // parker is 2 (同时换行) 
echo 'parker is $parker\n'; //  parker is $parker\n 
 
?> 

在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\和插入单引号')。
所以,当在字串中进行变量代换和包含\n(换行符)等转义序列时,应该使用双引号。
单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些。

0x02 PHP中 or||的区别

很多人认为PHP中 or|| 是可以划等号的,一开始我也是这么认为的,但是其实不是,它们还是存在一个优先级的差别。下面通过一个例子说明它们的差异

<?php
$a = false || true;
$b = false or true;
var_dump($a);//true
echo '<br />';
var_dump($b);//false
?>

执行后,$a为true,而$b为false。这是因为||的优先级大于 =,先执行 false || true,然后将执行后的结果true赋值给$a。而or的优先级小于=,先将false赋值给$b,因此$b就为false

最后附上php文档中关于运算符的图例
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,423评论 19 139
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,440评论 0 13
  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,本章逐一介绍这些运算...
    许先生__阅读 691评论 0 3
  • 10.金鳞岂是池中物,一遇风云便化龙。 九霄龙吟惊天变,风云际会潜水游。 上榜理由:仅仅四句便把人生的变幻莫测...
    兰台小小生阅读 4,068评论 10 10
  • 时间像极了一张薄如蝉翼的白纸,在生活的烈焰中,顷刻间变成了另外一种模样。 每一个具体而又真实的日子,都在不经意间从...
    悄然Edward阅读 251评论 0 7

友情链接更多精彩内容