上一篇文章中我們了解了查找字符串在另一字符串中最后一次出現(xiàn)位置的方法,有需要的請(qǐng)看《php如何知道字符串最后一回出現(xiàn)的位置》。這次我們向大家介紹使用“自然”算法知道字符串的異同,有需要的可以參考參考。
在之前的文章中,我們介紹了比較字符串的方法,但是我們這次不一樣啦,我們使用“自然”算法來比較字符串。如果有想知道使用普通算法比較字符串的,可以看完之前的文章《php函數(shù)之如何知道字符串的異同》哦。
我們來看看什么叫做“自然”排序算法。
實(shí)現(xiàn)了一個(gè)和人們通常對(duì)字母數(shù)字字符串進(jìn)行排序的方法一樣的排序算法并保持原有鍵/值的關(guān)聯(lián),這被稱為“自然排序”。
好了,我們現(xiàn)在就來進(jìn)入正題吧。
首先我們來看一個(gè)小例子。
<?php echo strnatcasecmp("2Hello WORLD!","10Hello WORLD!"); echo "<br>"; echo strnatcasecmp("2hello world!","2aello world!"); echo "<br>"; echo strnatcasecmp("2hello world!","9hello WORLD!"); echo "<br>"; echo strnatcasecmp("2hello world!","2HELLO WORLD!"); ?>
這個(gè)結(jié)果是
我們仔細(xì)看看這個(gè)例子啊,當(dāng)我們除了前面數(shù)字其他都一模一樣的時(shí)候,我們發(fā)現(xiàn)數(shù)字是-1,當(dāng)我們數(shù)字一樣,但是后面字母有所變化的時(shí)候,是1,而當(dāng)數(shù)字一樣,字母一樣,大小寫不一樣的時(shí)候,發(fā)現(xiàn)為0.這都是什么原因呢?
帶著這些疑問,我們?nèi)タ纯催@個(gè)函數(shù)吧。
strnatcasecmp() 函數(shù)使用一種"自然"算法來比較兩個(gè)字符串(不區(qū)分大小寫)。
既然這樣,那我們?nèi)タ纯催@個(gè)函數(shù)的語(yǔ)法吧。
strnatcasecmp(要比較的第一個(gè)字符串,要比較的第二個(gè)字符串)
之前我們還在好奇的“0”,“-1”,“1”,你知道是什么意思嗎?不賣關(guān)子了,其實(shí)這些是函數(shù)的返回值,用來說明第一個(gè)字符串與第二個(gè)字符串之間的關(guān)系的。
該函數(shù)返回:
-
0 – 如果兩個(gè)字符串相等
-
<0 – 如果 string1 小于 string2
-
>0 – 如果 string1 大于 string2
其實(shí)用“自然”算法比較字符串的方法有兩種,這次我們就介紹這種對(duì)大小寫不敏感的,下一篇文章介紹一下對(duì)大小寫敏感的。
就說到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦。→ →php視頻教程