Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php比较运算符怎么使用?比较运算符用法详解

php比较运算符怎么使用?比较运算符用法详解

伊谢尔伦
伊谢尔伦asal
2017-06-21 10:41:172381semak imbas

比较运算符允许对两个值进行比较。比较运算符有如下几个:

1) $a > $b 大于:如果 $a 严格大于$b,则返回TRUE
2) $a d12872f5d2cd604252a3b1a6bdf4afab= $b 大于等于:如果 $a 大于等于$b,则返回TRUE
4) $a 96916d5b33cbd69c2f0c1258db15a92f $b 不等于:如果 $a 不等于$b,则返回TRUE
6) $a != $b 不等于:如果 $a 不等于$b,则返回TRUE(同上)
7) $a == $b 等于:如果 $a等于 $b,则返回TRUE
8) $a === $b 全等于:如果 $a等于 $b,并且它们的类型也相同,则返回TRUE
9) $a !== $b 不全等于:如果 $a 不等于 $b,或者它们的类型不同,则返回TRUE

其中,我们要重点区分一下“等于”和“全等于”,$a == $b只是对两个变量的值进行了比较运算,而全等于要对运算符两边的表达式同时进行值的比较和数据类型的比较,只有两边的值都相等,运算结果才是“真”。结合“不全等”运算符举例来说,$a = 2; var_dump($a!==2);这个表达式返回值是“假”,因为2是等于2的。另外,$a = 2;是整型而var_dump($a!==2);里的2也是整型,但运算符是不全等于"!=="所以结果是假,因为2是等于2的。反过来如果是这样$a = 2; var_dump($a!=='2');运算结果就是“真”的,因为2不等于'2',后面的'2'是一个字符串的'2',即不全等于不仅仅只是比较变量值,还要对变量的数据类型进行比较。

PHP中比较不同类型的结果

如果PHP比较运算符比较一个整数和字符串,则字符串会被转换为整数后比较。如果比较两个数字字符串,则会把它们作为整数比较,另外此规则也适用于 switch 语句。
比如:
 var_dump(0 == "a");   // 返回TRUE,"a"被转为0
 var_dump("1" == "01");   // 返回TRUE,当做整数处理

string或null和string的比较:将NULL 转换为 "",进行数字或字符串的比较
bool或null间的比较:转换为bool,FALSE < TRUE 
object内置类可以定义自己的比较,不同类不能比较,相同类则比较属性
string,resource 或 number间的比较:将字符串和资源转换成数字,按普通数学比较
array间的比较:具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组间无法比较,需要逐个值比较(见如下代码)
array和任何其它类型比较:array 总是更大 
object和任何其它类型比较:object 总是更大

1、对于数组 

$a=array(1,2,3,6); 
$b=array(1,2,3,6,8); 
echo "\n"; 
var_dump( $a>$b); 
var_dump( $a==$b); 
var_dump( $a<$b);

结果: 

boolean false 
boolean false 
boolean true

ps:具有较少成员的数组较小 

$a=array(1,2,3,6,9); 
$b=array(1,2,3,6,8); 
echo "\n"; 
var_dump( $a>$b); 
var_dump( $a==$b); 
var_dump( $a<$b); 
boolean true 
boolean false 
boolean false

ps:  挨个值比较   

$a=array(1,2,3,6,&#39;b&#39;=>3); 
$b=array(1,2,3,6,8); 
echo "\n"; 
var_dump( $a>$b); 
var_dump( $a==$b); 
var_dump( $a<$b); 
boolean false 
boolean false 
boolean false

ps: 如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,都返回false。 

数组比较代码:

function standard_array_compare($op1, $op2)
{
  if (count($op1) < count($op2)) {    //具有较少成员的数组较小
    return -1;    // $op1 < $op2
  } elseif (count($op1) > count($op2)) {
    return 1;    // $op1 > $op2
   } 
 
  foreach ($op1 as $key => $val) {
   if (!array_key_exists($key, $op2)) {
      return null;   
   } else if ($val < $op2[$key]) {
      return -1;
    } elseif ($val > $op2[$key]) {
      return 1;
     }
  }
  return 0;   // $op1 == $op2
}


2、对于bool或者null和其他类型比较 
  
var_dump((bool)(null));//boolean false//null转换为bool时为false; 

null和其他类型转换为bool,然后再比较,而且FALSE < TRUE

比较运算符中的三元运算符:

表达式 (expr1) ? (expr2) : (expr3)  当表达式expr1 的值为 TRUE 时的值为expr2,当表达式 expr1 的值为 FALSE 时的值为expr3。

Atas ialah kandungan terperinci php比较运算符怎么使用?比较运算符用法详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn