php字串比較

來源:互聯網
上載者:User

標籤:

 比較兩個字串是否相等,最常見的方法就是使用“===”來判斷,至於它和“==”的區別,簡單來說 就是前者強調“identical”類型也要求一樣;後者要求“equal”,值相同就可以了。或者使用strcmp來判斷,但是這個能夠告 訴你兩個字串是否相等,但是無法告訴你在那裡不同。

  一般能用 !=, == 比較兩個對象是否相等,只所以說是兩個對象,是因為他們不一定全部為字串,也能為整型等等。
  如果用 !==,===(能看到多了一個等號)比較的話,兩個對象的類型要嚴格相等才能返回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)

http://hi.baidu.com/19821213/blog/item/14192c2aaeccfc315343c180.html

        在PHP中,使用==是不可靠的。即便是變數的類型相同,==為真也並不代表真的就相等。所以在php中盡量使用 === 來進行比較,使用 == 前一定要三思。 在PHP中 === 的操作是ZEND_IS_IDENTICAL,PHP不會嘗試改變值的類型,非常嚴謹,比較的速度也要快一些。例如:

$aa = ‘88.‘;//多個點
$b = ‘88‘;

if($aa == $b) 

     echo "相等";

得到的結果是相等。因為88是一個數字,php會自動轉換成整型或者浮點型進行==比較,當然會相等; strcmp是強制轉換成string類型比較,===是要求數值一樣並且類型一樣 88是int類型,88.是浮點類型,當然不一樣。用恒等 === 則 不會得到相等的結論.用strcmp()也不會得到相等的結論.所以最好不要使用 == 作為字串相等比較.改用strcmp();

       對於倆個字串, 會首先判斷他們是否是numeric_string, 如果是,那麼就會轉換成整形來比較.. 那麼什麼是numeric string呢? 因為PHP不區分類型, 所以它採用一個策略, 當你的變數看起來是一個數位時候, 那麼她就認為這個變數是一個數字,然後轉換為整形來比較。

 

php字串比較

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.