php字串比較函式

2021-09-20 11:58:24 字數 1666 閱讀 1587

比較兩個字串是否相等,最常見的方法就是使用「===」來判斷,至於它和「==」的區別,簡單來說就是前者強調「identical」型別也要求一樣;後者要求「equal」,值相同就可以了,參考。或者使用strcmp來判斷,但是這個能夠告訴你兩個字串是否相等,但是無法告訴你在那裡不同。我的思路是單字串分割為乙個個字母(character),這樣比較就能精確知道在那個位置不同了。分隔字串,使用「str_split」就可以了,語法參考。然後輸出結果陣列,好處是連空格也會作為陣列的元素。我之前的例子就是因為前乙個字串包含2個空格,而後乙個只有乙個。但是輸出的時候看到的顯示都是一樣的。 也可以按照其他分隔符進行分割,如「explode」或者「preg_split」,

一般能用 !=, == 比較兩個物件是否相等,只所以說是兩個物件,是因為他們不一定全部為字串,也能為整型等等。比如

**如下

複製**

$a = "joe"; 

$b = "jerry"; 

if ($a != $b) 

else 

如果用 !==,===(能看到多了乙個等號)比較的話,兩個物件的型別要嚴格相等才能返回true;否則用==,!=則會將字串自動轉換成相應的型別,以便進行比較.

**如下

複製**

22 == "22"; // 返回 true 

22 === "22"; // 返回false

正因為這樣,所以我們的程式時常會發生一些想不到的「意外」:

0 == "我愛你"; // 返回true 

1 == "1 我愛你";// 返回true

php教程裡更有這樣一組用於字串比較的函式:strcmp,strcasecmp,strncasecmp(), strncmp(),他們都是如果前者比後者大,則返回大於0的整數;如果前者比後者小,則返回小於0的整數;如果兩者相等,則返回0.他們比較的原理和其他語言的規則都是相同的。

strcmp是用於區分大小寫(即大小寫敏感)的字串比較:

echo strcmp("abcdd", "abcde"); // 返回 1 (>0), 比較的是 "b"和"b"

strcasecmp用於不區分大小寫的字串比較:

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字串比較函式

比較兩個字串是否相等,最常見的方法就是使用 來判斷,至於它和 的區別,簡單來說就是前者強調 identical 型別也要求一樣 後者要求 equal 值相同就可以了,參考。或者使用strcmp來判斷,但是這個能夠告訴你兩個字串是否相等,但是無法告訴你在那裡不同。我的思路是單字串分割為乙個個字母 ch...

php字串比較函式

比較兩個字串是否相等,最常見的方法就是使用 來判斷,至於它和 的區別,簡單來說就是前者強調 identical 型別也要求一樣 後者要求 equal 值相同就可以了,參考。或者使用strcmp來判斷,但是這個能夠告訴你兩個字串是否相等,但是無法告訴你在那裡不同。我的思路是單字串分割為乙個個字母 ch...

php字串比較函式

比較兩個字串是否相等,最常見的方法就是使用 來判斷,至於它和 的區別,簡單來說就是前者強調 identical 型別也要求一樣 後者要求 equal 值相同就可以了,參考。或者使用strcmp來判斷,但是這個能夠告訴你兩個字串是否相等,但是無法告訴你在那裡不同。我的思路是單字串分割為乙個個字母 ch...