簡體   English   中英

php如果在foreach內部錯了

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM