上一篇文章中我們了解了查找字符串在另一字符串中最后一次出現位置的方法,有需要的請看《php如何知道字符串最后一回出現的位置》。這次我們向大家介紹使用“自然”算法知道字符串的異同,有需要的可以參考參考。
在之前的文章中,我們介紹了比較字符串的方法,但是我們這次不一樣啦,我們使用“自然”算法來比較字符串。如果有想知道使用普通算法比較字符串的,可以看完之前的文章《php函數之如何知道字符串的異同》哦。
我們來看看什么叫做“自然”排序算法。
實現了一個和人們通常對字母數字字符串進行排序的方法一樣的排序算法并保持原有鍵/值的關聯,這被稱為“自然排序”。
好了,我們現在就來進入正題吧。
首先我們來看一個小例子。
<?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!"); ?>
這個結果是
我們仔細看看這個例子啊,當我們除了前面數字其他都一模一樣的時候,我們發現數字是-1,當我們數字一樣,但是后面字母有所變化的時候,是1,而當數字一樣,字母一樣,大小寫不一樣的時候,發現為0.這都是什么原因呢?
帶著這些疑問,我們去看看這個函數吧。
strnatcasecmp() 函數使用一種"自然"算法來比較兩個字符串(不區分大小寫)。
既然這樣,那我們去看看這個函數的語法吧。
strnatcasecmp(要比較的第一個字符串,要比較的第二個字符串)
之前我們還在好奇的“0”,“-1”,“1”,你知道是什么意思嗎?不賣關子了,其實這些是函數的返回值,用來說明第一個字符串與第二個字符串之間的關系的。
該函數返回:
-
0 – 如果兩個字符串相等
-
<0 – 如果 string1 小于 string2
-
>0 – 如果 string1 大于 string2
其實用“自然”算法比較字符串的方法有兩種,這次我們就介紹這種對大小寫不敏感的,下一篇文章介紹一下對大小寫敏感的。
就說到這里了,有其他想知道的,可以點擊這個哦。→ →php視頻教程