PHP比较运算符有哪些,如何用于对比多种类型
Admin 2022-09-22 群英技术资讯 566 次浏览
这篇文章我们来了解“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") {
case 0:
echo "0";
break;
case "a": // never reached because "a" is already matched with 0
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 #2 赋默认值
<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// The above is identical to this if/else statement
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, you can see that the first expression is evaluated to 'true', which
// in turn evaluates to (bool)true, thus returning the true branch of the
// second ternary expression.
?>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
问题描述碰到这么一个问题:IIS上跑PHP,已经在IIS中添加FastCGI模块映射。当IIS的应用程序池配置为DefaultAppPool时执行phpinfo()正常。
这篇文章主要介绍了Yii框架视图、视图布局、视图数据块操作,结合实例形式分析了Yii框架相关的视图、布局、控制器及数据相关操作技巧,需要的朋友可以参考下
thinkphp中使用ajax方法;thinkphp使用ajax和PHP使用ajax的方法一样,不同点在于PHP的ajax中的url指向了一个页面,而thinkphp里面的url需要指向一个操作方法,可以利用ajax返回指定的数据,返回数据类型的修改等。
本文主要介绍如何在 PHP 项目中使用 php-mqtt/client 客户端库 ,实现 MQTT 客户端与 MQTT 服务器的连接、订阅、取消订阅、收发消息等功能。
php不能生成图片的解决办法:1、打开gd2库,通过phpinfo进行查看。清除bom,代码是顶行开始写的,所以问题可能出现在代码上。2、在header前加上ob_clean()语句,随后就可以运行了。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008