PHP兩字串比較,值相同對比卻不相等

時間 2021-07-08 20:34:05

1樓:匿名使用者

在php中,可以用==(雙等號)或者 ===(三等號)來比較字串。兩者的區別是雙等號不比較型別,三等號會比較型別,它不轉換型別;用雙等號進行比較時,如果等號左右兩邊有數字型別的值,剛會把另乙個值轉化為數字,然後進行比較。這樣的話,如果是純字串或者null時,會轉化為0進行比較。

同樣,大小於號也和等號一樣,比較時可能出現不正確的結果。

所以,比較字串可以用php的自帶函式strcmp和strcasecmp。其中strcasecmp是strcmp的變種,它會先把字串轉化為小寫再進行比較。 如下**:

var_dump(0 == 'test');

var_dump(0 == '');

var_dump(5 > 't');

var_dump(strcmp(5, 't'));

執行結果:

bool(true)

bool(true)

bool(true)

int(-1)

2樓:匿名使用者

$d是讀取其他網頁的資訊後擷取出來的字串這裡的擷取是什麼意思?post過來的還是用了擷取函式?

你反應的問題,我這麼多年的php經驗,沒遇到過看你的描述你也不像是新手,看看是不是哪兒粗心了

3樓:匿名使用者

有沒有其他空字元之類的

4樓:佛子門豐

樓上答案有誤,誤導了很多人。

恰好我今天也遇到,兩個值明明一樣,但是相比之下,if以後,結果就是false,怎麼都不行。

最後,我來到這裡,看到樓上的答案,去試了一下,結果返因為null仔細對比之下,除了乙個是字串,乙個是數值之外,並沒有任何異常。但是返回依然還是false。

最後使用strcmp進行判斷,發現兩個值相等結果為0.不相等時為其它值。於是引用了下面這個方法。才解決了問題。

if(strcmp($a== $b)==0)else

結果為false;雖然很奇怪,但是就是這樣。

if(strcmp($a== $b)==0)

結果為true.

我是這樣解決的,哪果有大神看到,知道這個原理到底是怎麼回事,歡迎來糾錯。

如何用php檢測兩個變數是否相同?

5樓:我是輝煌帝

$b = 1;

$c = 3;

if($b == $c)

else

6樓:匿名使用者

if(變數1==變數2)else

php語言中如何比較兩個字串完全相等?

7樓:匿名使用者

朋友搜到這個問題進了坑,特來說明一下如何判斷

if(strcmp($a,$b )==0) else

8樓:匿名使用者

== 判斷字串相等應該可以呀。

== 對於這個 0 和 ''是相等的,因為他們是false.

=== 這個是絕對的等於。 你試試、

9樓:匿名使用者

strcmp

字串比較。

語法bai: int strcmp(string str1, string str2);

返回值: 整數

du函式種類zhi: 資料處理

內容說明

本函式用來比dao較專二字串的大小。返回負數表示屬 str1 小於 str2;返回正數表示 str1 大於 str2;返回零表示二字串相同。

10樓:匿名使用者

= 是賦值

== 才是比較,不過要考慮到大小寫的情況

php正規表示式匹配字串的多個值然後逐一替換掉裡面的不全部替換成

彼德範 舉個例子給你看看是不是你想要的。有個字串 abcadeafg 把其中的三個字母a分別替換成x,y,z pattern array a a a replacement array x y z subject abcadeafg res preg replace pattern,replacem...

shell中如何比較兩字串是否相等

bin bash a abc b def if a b then echo a is same as b else echo a is different from b fi 小米飛貓 bin bash filename is diffs.shif 2 then echo usage diffs.s...

C語言中判斷兩個字串是否相同的方法

c語言提供了幾個標準庫函式,可以比較兩個字串是否相同。以下是用strcmp 函式比較字串的一個例子 include include void main void void main void 上例的列印輸出如下所示 str 1 is equal to str 2.str 1 is not equal...