如果我有被賦予一個字符串,也可以是數字,像這樣的變量:轉換VS不同的比較
$a = "1";
如果我要檢查它是否確實等於1,沒有任何
if((int)$a == 1) {
whatever();
}
和
if($a == "1") {
whatever();
}
在這裏,我想PHP,但對其他語言的答案之間的功能差異將受到歡迎。
如果我有被賦予一個字符串,也可以是數字,像這樣的變量:轉換VS不同的比較
$a = "1";
如果我要檢查它是否確實等於1,沒有任何
if((int)$a == 1) {
whatever();
}
和
if($a == "1") {
whatever();
}
在這裏,我想PHP,但對其他語言的答案之間的功能差異將受到歡迎。
$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();
}
在第一種情況下,您需要轉換並比較,而在第二種情況下只能比較值。從這個意義上說,第二種解決方案似乎更好,因爲它避免了不必要的操作第二個版本更安全,因爲$a
可能無法轉換爲int。
雖然比比較數字更難比較字符串嗎?如果它是一個更長的數字,比如'$ a =「34287」'? – Bluefire
轉換爲整數將再次涉及迭代字符串**加**一些額外的操作。 –
,因爲你的問題也問到,你可能會尋找更多的其他語言一般信息,在這種情況下不要忘記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
}
不,在PHP中沒有功能差異。第一種情況是PHP在第二種情況下在幕後執行的操作。 – nickb
取決於$ a來自哪裏。如果用戶輸入,要小心,就像'$ a =「1a」'那麼第一個是真的,但第二個是錯誤的。 – cmbuckley