字符串比較說明
當s1<s2時,返回為負數
當s1=s2時,返回值= 0
當s1>s2時,返回正數
1 <?php 2 $str1 = 'str100'; 3 $str2 = 'str20'; 4 echo strcmp($str1, $str2)."<br>"; 5 //輸出-1 6 echo strnatcmp($str1, $str2)."<br>"; 7 //輸出1 8 echo strncmp($str1, $str2, 5)."<br>"; 9 //輸出-1 10 11 ?>
strcmp(str1, str2)函數按照字符比較兩個字符串,即兩個字符串自左向右逐個字符比較(按ASCII值大小相比較),直到出現不同的字符或遇'\0'為止。如:"A"<"B" "a">"A" "computer">"compare"
strnatcmp(str1, str2)函數使用自然排序算法比較字符串該函數實現了以人類習慣對數字型字符串進行排序的比較算法,這就是“自然順序”。
strncmp(str1, str2, len)函數比較的原理參照strcmp(str1, str2)函數,區別在於只是比較字符串的開頭的len個字符。
ps:以上三個函數都是區分大小寫的,若是對比較的字符串不區分大小寫,則有另外三個類似函數:strcasecmp,strnatcasecmp,strncasecmp.
比較一下:
函數原型:extern int strcmp(const char *s1,const char * s2);
int strncmp(char *str1, char *str2, int maxlen);
可以看出strncmp多一個參數maxlen,區別就在這裡,這個表示的是比較字符串的前maxlen長度的字符
兩者返回值也不同:
strcmp,當s1<s2時,返回負數
當s1==s2時,返回0
當s1>s2時,返回正數
strncmp:如果前maxlen字節完全相等,返回值就=0;
如果在前maxlen字節比較過程中,出現str1[n]與str2[n]不等,則返回(str1[n]-str2[n])。
函數:int strcmp (const char *s1, const char *s2)
這個函數用來比較s1和s2字符串,這個函數將返回一個值,它的符號與第一對不同的字符的比較結果相關。
如果兩個字符串相等的話,strcmp將返回0。
如果s1是s2的一個子串的話,s1小於s2
此外還有函數
int strncmp (const char *s1, const char *s2, size_t size)
此函數與strcmp極為類似。不同之處是,strncmp函數是指定比較size個字符。也就是說,如果字符串s1與s2的前size個字符相同,函數返回值為0。