Home  >  Article  >  Backend Development  >  How to use the PHP operator == and what is the difference between it and ===?

How to use the PHP operator == and what is the difference between it and ===?

伊谢尔伦
伊谢尔伦Original
2017-06-21 14:29:322179browse

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

<?php  
var_dump(&#39;01&#39; == 1);  
?>

以上代码输出结果为:

bool(true)

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

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

<?php  
   var_dump(in_array(&#39;01&#39;, array(&#39;1&#39;)));  
?>

以上代码输出结果为:

bool(true)

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

<?php   
   var_dump(in_array(&#39;01&#39;, array(&#39;1&#39;), 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之类的空值你怎么判断成功或者失败呢?这是就可以用 === ,它可以区分变量类型。

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

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

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

$a a8093152e673feb7aba1828c43532094 $b    不等    TRUE,如果 $a 不等于 $b。    

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

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

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

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

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

The above is the detailed content of How to use the PHP operator == and what is the difference between it and ===?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn