意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

PHP比较运算符有哪些,如何用于对比多种类型

来源:恒创科技 编辑:恒创科技编辑部
2024-01-10 12:10:59

这篇文章我们来了解“PHP比较运算符有哪些,如何用于对比多种类型”的内容,小编通过实际的案例向大家展示了操作过程,简单易懂,有需要的朋友可以参考了解看看,那么接下来就跟随小编的思路来往下学习吧,希望对大家学习或工作能有帮助。



PHP比较运算符有哪些,如何用于对比多种类型


比较运算符,如同它们名称所暗示的,允许对两个值进行比较。

比较运算符 例子 名称 结果 $a == $b 等于 TRUE,如果类型转换后$a等于$b。 $a === $b 全等 TRUE,如果$a等于$b,并且它们的类型也相同。 $a != $b 不等 TRUE,如果类型转换后$a不等于$b。 $a <> $b 不等 TRUE,如果类型转换后$a不等于$b。 $a !== $b 不全等 TRUE,如果$a不等于$b,或者它们的类型不同。 $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("10"=="1e1");//10==10->true
var_dump(100=="1e2");//100==100->true

switch("a"){
case0:
echo"0";
break;
case"a"://neverreachedbecause"a"isalreadymatchedwith0
echo"a";
break;
}
?>

对于多种类型,比较运算符根据下表比较(按顺序)。

比较多种类型 运算数 1 类型 运算数 2 类型 结果 null或string string 将NULL转换为 "",进行数字或词汇比较 bool或null 任何其它类型 转换为bool,FALSE<TRUE object object 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 string,resource或number string,resource或number 将字符串和资源转换成数字,按普通数学比较 array array 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) object 任何其它类型 object总是更大 array 任何其它类型 array总是更大 Example #1 标准数组比较代码
<?php
//数组是用标准比较运算符这样比较的
functionstandard_array_compare($op1,$op2)
{
if(count($op1)<count($op2)){
return-1;//$op1<$op2
}elseif(count($op1)>count($op2)){
return1;//$op1>$op2
}
foreach($op1as$key=>$val){
if(!array_key_exists($key,$op2)){
returnnull;//uncomparable
}elseif($val<$op2[$key]){
return-1;
}elseif($val>$op2[$key]){
return1;
}
}
return0;//$op1==$op2
}
?> Warning:由于浮点数float的内部表达方式,不应比较两个浮点数是否相等。

三元运算符

另一个条件运算符是“?:”(或三元)运算符 。

Example #2 赋默认值

<?php
//Exampleusagefor:TernaryOperator
$action=(empty($_POST['action']))?'default':$_POST['action'];

//Theaboveisidenticaltothisif/elsestatement
if(empty($_POST['action'])){
$action='default';
}else{
$action=$_POST['action'];
}

?>

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

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式expr1 ?: expr3在expr1求值为TRUE时返回expr1,否则返回expr3。

Note:注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句return $var == 42 ? $a : $b;将不起作用,以后的 PHP 版本会为此发出一条警告。

Note:

建议避免将三元运算符堆积在一起使用。当在一条语句中使用多个三元运算符时会造成 PHP 运算结果不清晰:

Example #3 不清晰的三元运算符行为

<?php
//乍看起来下面的输出是'true'
echo(true?'true':false?'t':'f');

//然而,上面语句的实际输出是't',因为三元运算符是从左往右计算的

//下面是与上面等价的语句,但更清晰
echo((true?'true':'false')?'t':'f');

//here,youcanseethatthefirstexpressionisevaluatedto'true',which
//inturnevaluatesto(bool)true,thusreturningthetruebranchofthe
//secondternaryexpression.
?>


感谢各位的阅读,以上就是“PHP比较运算符有哪些,如何用于对比多种类型”的内容了,经过本文的学习后,相信大家对PHP比较运算符有哪些,如何用于对比多种类型都有更深刻的体会了吧。这里是恒创科技,小编将为大家推送更多相关知识点的文章,欢迎关注!
上一篇: php - Swoole 进程模型分析_个人文章 下一篇: 手机怎么远程登录云服务器?