[英]php if inside foreach wrong
如果在foreach內部我有問題。 代碼的答案必須是“Equal”,但是“EqualEqual”。
這是我的代碼
$list=array(
"X" => "X",
"0" => "0",
"2" => "2",
"3" => "3"
);
$var="X";
foreach ($list as $key => $val){
if ($var==$key) {
echo 'Equal';
}
}
使用:
if ($var===$key) {
echo 'Equal';
}
你需要===
因為var_dump($var==0);
返回true,這是在類型雜耍之后。
var_dump('X' == 0);//true
參考 - http://php.net/manual/en/language.operators.comparison.php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
如果將數字與字符串進行比較或比較涉及數字字符串,則每個字符串將轉換為數字,並且數字執行比較。 這些規則也適用於switch語句。 當比較為===或!==時,不會發生類型轉換,因為這涉及比較類型和值。
$a == $b Equal TRUE if $a is equal to $b after type juggling.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type.
所以,嘗試使用“===”而不是“==”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.