美文网首页
php比较运算符

php比较运算符

作者: evil_ice | 来源:发表于2018-06-22 12:14 被阅读15次
php比较运算符.png

一,比较的注意事项

  • 1,如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。
  • 2,此规则也适用于 switch语句。
  • 3,当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。
  • 4,由于浮点数 float的内部表达方式,永远不要比较两个浮点数float是否相等。
    若要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。
<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;

if(abs($a-$b) < $epsilon) {
    echo "true";
}
?>

#二,代码示例
##1,示例1
<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}
?>

2,示例2

<?php  
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
 
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
 
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
 
// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1
 
// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0
 
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1
 
$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1
 
// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

?>

三,进一步说明

1,在比较时,字符串要求转换为数值时,数值的类型如下:

  • 字符串中包含'.', 'e', 'E'时,并且在PHP最大最小值的范围之内,则被当做float类型
  • 字符串中不包含'.', 'e', 'E'时,并且在PHP最大最小值的范围之内,则被当做integer类型
  • 如果字符串以合法的数字开头,则字符串的值就是合法开头的数字的值。
  • 如果字符串中没有数字,则为0
  • 合法数值中可以包括正负号,小数点(.),指数(e或E)

2,示例代码

<?php
var_dump('a'==0);//true
var_dump('aaaaacda'==0);//true
var_dump('12a'==12); //true
var_dump('22abcdef22'==22); //true
var_dump('1'==1); //true
var_dump(10=="1e1");//true
var_dump(16=="0x10");//flase
?>

相关文章

  • PHP运算符

    PHP 算数运算符 PHP 赋值运算符 PHP 字符串运算符 PHP 递增递减运算符 PHP 比较运算符 PHP ...

  • 第5章 PHP中常用的运算符

    什么是运算符 PHP中的运算符有哪些?PHP运算符一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算...

  • PHP-运算符

    php的运算符的错误控制@运算符的优先级比较运算符递增/递减运算符逻辑运算符 php支持一个错误运算符:@当将其放...

  • 2018-09-06 基础语法-比较运算符

    比较运算符: == 、=== ==:仅仅比较值, ===:不仅比较值,同时比较类型 例子:

  • php运算符

    算数运算符 递增/递减运算符 比较运算符 逻辑运算符 三元运算符 组合比较符(PHP7+) 位运算符 运算符优先级

  • 八月十三

    比较运算符主要是用于进行比较运算的,例如:等于、全等、不等、大于、小于。 在PHP中常用的比较运算符:> < ...

  • 运算符的优先级

    PHP算数运算符的优先级: 递增/递减> ! > 算数运算符 > 大小比较 > (不)相等比较 > 引用 > 位运...

  • 5.PHP入门-语法概述(五)运算符

    PHP 算数运算符 PHP 赋值运算符 PHP 赋值运算符用于向变量传值。PHP 中基础的赋值运算符是 "="。这...

  • 2019-07-23

    php支持以下类型的运算符。算术运算符,比较运算符,逻辑(或关系)运算符,赋值运算符有条件(或三元)运算符.

  • 5.PHP 运算符

    PHP 的运算符,它包含算术运算符、赋值运算符、位运算符、比较运算符、执行运算符、递增递减运算符、逻辑运算符、字符...

网友评论

      本文标题:php比较运算符

      本文链接:https://www.haomeiwen.com/subject/yxckyftx.html