2013-01-23 28 views
1

如果我有被賦予一個字符串,也可以是數字,像這樣的變量:轉換VS不同的比較

$a = "1"; 

如果我要檢查它是否確實等於1,沒有任何

if((int)$a == 1) { 
    whatever(); 
} 

if($a == "1") { 
    whatever(); 
} 

在這裏,我想PHP,但對其他語言的答案之間的功能差異將受到歡迎。

+1

不,在PHP中沒有功能差異。第一種情況是PHP在第二種情況下在幕後執行的操作。 – nickb

+0

取決於$ a來自哪裏。如果用戶輸入,要小心,就像'$ a =「1a」'那麼第一個是真的,但第二個是錯誤的。 – cmbuckley

回答

0
$a = "1"; // $a is a string 
$a = 1; // $a is an integer 

一日一

if((int)$a == 1) { 
//int == int 
    whatever(); 
} 

第二屆一個

if($a == "1") { 
    //string == string 
    whatever(); 
} 

但是,如果你

$a = "1"; // $a is a string 

if($a == 1) { 
    //string & int 
    //here $a will be automatically cast into int by php 
    whatever(); 
} 
0

在第一種情況下,您需要轉換並比較,而在第二種情況下只能比較值。從這個意義上說,第二種解決方案似乎更好,因爲它避免了不必要的操作第二個版本更安全,因爲$a可能無法轉換爲int。

+0

雖然比比較數字更難比較字符串嗎?如果它是一個更長的數字,比如'$ a =「34287」'? – Bluefire

+0

轉換爲整數將再次涉及迭代字符串**加**一些額外的操作。 –

0

,因爲你的問題也問到,你可能會尋找更多的其他語言一般信息,在這種情況下不要忘記tr iple等於。這真的等於某件事情。

$a = "1"; 
if ($a===1) { 
    // never gonna happen 
} 
$b = 1; 
if ($b === 1) { 
    // yep you're a number and you're equal to 1 
}