基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解


Posted in PHP onMay 15, 2013

使用“===”来判断,至于它和“==”的区别,简单来说就是前者强调“identical(相同的,完全相同)”类型也要求一样;后者要求“equal(相等)”,值相同就可以了。或者使用strcmp来判断,但是这个能够告诉你两个字符串是否相等,但是无法告诉你在哪里不同。

一般能用 !=, == 比较两个对象是否相等,之所以说是两个对象,是因为他们不一定全部为字符串,也能为整型等等。比如

$a = "joe"; 
$b = "jerry"; 
if ($a != $b) 
{ 
    echo "不相等"; 
} 
else 
{ 
    echo "相等"; 
}

如果用  !== , === 比较的话,两个对象的类型要严格相等才能返回true;否则用==,!=则会将字符串自动转换成相应的类型,以便进行比较.
22 == "22"; // 返回 true 
22 === "22"; // 返回falsePHP 用于字符串比较的函数:strcmp(),strcasecmp(),strncasecmp(), strncmp(),他们都是 如果前者比后者大,则返回大于0 的整数;如果前者比后者小,则返回小于0 的整数;如果两者相等,则返回0.1)strcmp是用于 区分大小写 (即大小写敏感)的字符串比较:
2)echo strcmp("abcdd", "abcde"); // 返回 1 (>0), 比较的是 "b"和"b"
3)strcasecmp用于不区分大小写的字符串比较:
4)echo strcasecmp("abcdd", "abcde"); // 返回 -1 (<0), 比较的是"d"和"e"
strncmp用于比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncmp("abcdd", "abcde", 3); // 返回 1 (>0), 比较了 abc 和 abc
strncasecmp用于不区分大小写的比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncasecmp("abcdd", "abcde", 3); // 返回 0, 比较了 abc 和 abc, 由于不区分大小写,所以两者是相同的。
更有一种情况是单单比较字符串大小,达不到我们预定的需求,比如照常理 10.gif 会比 5.gif 大,但如果应用上面几个函数,就会返回 -1,即表示 10.gif比5.gif,针对这种情况,php提供了两个自然对比的函数strnatcmp,strnatcasecmp:
echo strnatcmp("10.gif", "5.gif"); // 返回 1 (>0) 
echo strnatcasecmp("10.gif", "5.gif"); // 返回 1 (>0)

 

PHP 相关文章推荐
配置支持SSI
Nov 25 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
php中的一些数组排序方法分享
Jul 20 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
php-fpm配置详解
Feb 12 PHP
yii实现级联下拉菜单的方法
Jul 31 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
解析dedecms空间迁移步骤详解
May 15 #PHP
基于php缓存的详解
May 15 #PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 #PHP
深入php之规范编程命名小结
May 15 #PHP
PHP+jQuery实现自动补全功能源码
May 15 #PHP
深入分析php之面向对象
May 15 #PHP
深入解析php之apc
May 15 #PHP
You might like
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php生成短网址示例
2014/05/05 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
jQuery总体架构的理解分析
2011/03/07 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
python 调用c语言函数的方法
2017/09/29 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
python实现简单俄罗斯方块
2020/03/13 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
婚礼证婚人证婚词
2014/01/08 职场文书
学校元旦晚会方案
2014/02/19 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
2015年度保密工作总结
2015/04/24 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis