php运算符 == 怎么使用以及与 === 恒等的区别是什么?

伊谢尔伦
发布: 2017-06-21 14:29:32
原创
2626人浏览过

php编程语言中有许多运算符来帮助我们处理相关的字符和数组,在某些情况下,php会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用php运算符==对两个字符串进行松散比较时,php会把类数值的字符串转换为数值进行比较。

<?php  
var_dump('01' == 1);  
?>
登录后复制

以上代码输出结果为:

立即学习PHP免费学习笔记(深入)”;

bool(true)
登录后复制

所以,在使用对字符串进行比较时,建议使用PHP运算符==对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。

除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:

<?php  
   var_dump(in_array('01', array('1')));  
?>
登录后复制

以上代码输出结果为:

立即学习PHP免费学习笔记(深入)”;

bool(true)
登录后复制

相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示:

<?php   
   var_dump(in_array('01', array('1'), true));   
?>
登录后复制

输出结果为:

bool(false)
登录后复制

由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。在PHP运算符==的介绍最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。

恒等计算符,和比较运算符号“==”的区别是 “==”不会检查条件式的表达式的类型,恒等计算符会同时检查表达式的值与类型。
这主要和php是无类型语言有关,比如 NULL,FALSE,array(),””,0,”0″这几个值如果用==他们是相等的,但是你如果判断出某个值真正的返回值呢,就可以用 ===
$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b == FALSE都成立

===运算符还是很有用的,php有些内置函数成功会返回某个值,失败会返回false,假如成功了但返回的是””或者0之类的空值你怎么判断成功或者失败呢?这是就可以用 === ,它可以区分变量类型。

Linfo.ai
Linfo.ai

Linfo AI 是一款AI驱动的 Chrome 扩展程序,可以将网页文章、行业报告、YouTube 视频和 PDF 文档转换为结构化摘要。

Linfo.ai 104
查看详情 Linfo.ai

$a == $b    等于    TRUE,如果 $a 等于 $b。    

$a === $b    全等    TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)    

$a != $b    不等    TRUE,如果 $a 不等于 $b。    

$a <> $b    不等    TRUE,如果 $a 不等于 $b。    

$a !== $b    非全等    TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)    

$a < $b    小与    TRUE,如果 $a 严格小于 $b。    

$a > $b    大于    TRUE,如果 $a 严格 $b。    

$a <= $b    小于等于    TRUE,如果 $a 小于或者等于 $b。    

$a >= $b    大于等于    TRUE,如果 $a 大于或者等于 $b。    

如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch语句

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("1" == "1e0"); // 1 == 1 -> true
switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}
?>
登录后复制

以上就是php运算符 == 怎么使用以及与 === 恒等的区别是什么?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号