2017-10-06 128 views
1

我需要檢查兩個字符串(數字)是否相同。但是,如果其中一個字符串有一個前導零,那麼所有的賭注都關閉 - 它說,他們是平等的:比較帶前導零的字符串

$hospitalno1 = "64583";     
$hospitalno2 = "064583"; 

if ($hospitalno1 <> $hospitalno2){ 
    echo "Different"; 
} 

我怎麼能這兩個變量比較字符串而不是數字?

回答

0

它們轉換成int

$hospitalno1 = "64583";     
$hospitalno2 = "064583"; 

if ((int)$hospitalno1 != (int)$hospitalno2){ 
    echo "Different"; 
} 

但提防 「這個字符串」 將成爲0,所以加is_int()之前轉換。

而不是<>你應該使用!=儘管前者將在PHP中工作,後者是跨語言標準。

0

如果我正確理解你的問題,你不希望字符串被打亂。

<> type juggles to match types before comparison, 
    causing your strings to be ints 
!== is a comparitor that doesn't type juggle before comparison 

這裏有一個比較運營商綱要: http://php.net/manual/en/language.operators.comparison.php

+0

許多該鏈接的感謝 - 它確實有幫助 – Crookers

2

只需使用:

<?php 
$hospitalno1 = "64583";     
$hospitalno2 = "064583"; 

if ($hospitalno1 !== $hospitalno2){ 
    echo "Different"; 
} 
else 
{ 
    echo "same" ; 
} 

?> 

!==會做嚴格的數據類型+價值進行檢查,如果有什麼不同的是將提醒。

+0

非常感謝 - 我從來沒有意識到<>和!==之間的區別。 – Crookers

0

你只需要利用!==,不會忽略鍵入否則類型會被忽略

$hospitalno1 = "64583";     
$hospitalno2 = "064583"; 

if ($hospitalno1 !== $hospitalno2){ 
    echo "Diffrent"; 
} 

DEMO

0

你非常接近。 與另一串字符只需預先將它們連接起來,a-,隨便什麼都行

$hospitalno1 = '64583'; 
    $hospitalno1 = 'a-'. $hospitalno1; 
$hospitalno2 = '064583'; 
    $hospitalno2 = 'a-'. $hospitalno2; 

if ($hospitalno1 <> $hospitalno2){ 
    echo "Different"; 
} 
0

請儘量將

<?php 
$hospitalno1 = (string)"64583";     
$hospitalno2 = (string)"064583"; 

if ($hospitalno1 !== $hospitalno2){ 
    echo "Different"; 
} 
?> 

我的PHP代碼鏈接>>Code