上篇博文《从18到19,PHP字符串的详细介绍(二)》我们学习了去除字符串首位空格和特殊字符的函数trim(函数)以及转义字符中用到的“\\”符号和自动转义还原函数addslashes()。这一件我们就来了解下对PHP字符串是如何进行比较运算的。比较运算我相信大家都不陌生 1<2 这就是比较运算,不过在PHP中的比较运算不会像这样这么简单。在PHP中如何对两个字符串之间进行比较,方法比较多结果也各不一样。常见的比较方法有:strcmp()函数按照字节进行比较,strnatcmp()函数按照自然排序进行比较,strncmp()函数从源字符位置开始比较。
1、按字节进行字符串比较——strcmp()函数
strcmp()函数——区分大小写
strcasecmp()函数——不区分大小写
语法:strcmp($zero1,$zero2);
返回的值:zero1和zero2是分别需要比较的两个字符串,如果两个字符串相等则返回0,如果参数zero1大于zero2则返回值大于0,如果zero1小于zero2则返回值小于0。
举例说明:用strcmp()和strcasecmp()函数分别进行比较
- <?php
- $zero1=”zero的PHP自学手册”;
- $zero2=”zero的PHP自学手册”;
- $a=”abc”;
- $b=”ABC”;
- $c=”abcd”;
- echo strcmp($zero1,$zero2);
- echo strcmp($a,$b);
- echo strcasecmp($a,$b);
- echo strcmp($a,$c);
- echo strcmp($c,$a);
- ?>
复制代码
实验结果:
0 1 0 -1 1
zero小贴士:利用字符串的这个比较运算可以判断登陆系统中用户名和密码输入是否正确哦
2、按自然排序法进行字符串的比较——strnatcmp()函数
利用strnatcmp()函数是比较的字符串中的数字部分,对字符串中的数字进行比较大小排序。
自然排序比较的语法:strnatcmp($zero1,$zero2)
返回的值和字节比较是一样的
举例说明:
- <?php
- $a=”zero的PHP自学手册1″;
- $b=”zero的PHP自学手册2″;
- $c=”zero的PHP自学手册1″;
- echo strnatcmp($a,$b);
- echo strnatcmp($b,$a);
- echo strnatcmp($a,$c);
- ?>
复制代码
返回结果:
-1 1 0
3、指定源字符串的位置开始比较——strncmp()函数
strncmp()函数用来比较字符串中的前X个字符,该函数区分字符的大小写。
语法:strncmp($zero1,$zero2,len) len-指定每个字符串中参与比较的字符数量
返回的值和字节比较是一样的
举例说明:
- <?php
- $a=”zero的PHP自学手册1″;
- $b=”ZEro的PHP自学手册2″;
- $c=”zero的php自学手册1″;
- echo strncmp($a,$b,2);
- echo strncmp($a,$c,2);
- echo strncmp($a,$c,10);
- ?>
复制代码
输出结果:
1 0 -1
echo strncmp($a,$b,2);输出结果为1,因为strncmp()函数区分大小写,因此在比较$a,$b的前两个字符时是不想等的,所以结果是1,至于为什么是1,zero通过学习本节PHP内容发现一个规律。
如果比较两个字符串的函数区分大小写,那么如果含有大写字母的字符串在前面则比较结果为1,如果大写字母在后面则比较结果为-1,也就是说再比较字符串运算中如果函数区分大小写那么大写是大于小写的。
Zero小贴士:从上面的几个比较函数中我们了解到三种函数有一个共同点——返回的值。zero1和zero2是分别需要比较的两个字符串,如果两个字符串相等则返回0,如果参数zero1大于zero2则返回值大于0,如果zero1小于zero2则返回值小于0。
对于PHP字符串的比较运算的学习到这里就告一段落,这节的内容Zero学起来认为还是比较简单的。不过虽然简单,但是我想字符串的运算在以后的PHP编程中会经常用到。因此我们也不能掉以轻心,认为学得差不多就行了。对于这节的内容Zero认为应该还要多早一些实例去操作,这样理解起来就不叫深刻。
|