基于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 相关文章推荐
PHP小程序自动提交到自助友情连接
Nov 24 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
Smarty模板配置实例简析
Jul 20 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 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
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
详解python3百度指数抓取实例
2016/12/12 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
python包的导入方式总结
2021/03/02 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
员工培训心得体会
2013/12/30 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
学校计划生育责任书
2015/05/09 职场文书
python OpenCV学习笔记
2021/03/31 Python
MySQL七种JOIN类型小结
2021/10/24 MySQL
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android