PHP第一个索引被视为字符串

时间:2017-10-17 18:50:08

标签: php

我将保持简短,这是我的代码:

<?php

$arr = array(
    1,
    2,
    3,
    "x" => "aaa", 
    "y" => "bbb"
);

foreach($arr as $k => $v){

    if($k !="y" && $k != "x") {
        echo $v . " ";
    }

}

?>

这就是结果:

2 3

它就像这样:

$example = 0;
if ($example == 'x' || $example == 'y') {
    echo "true";
}

会回应“真实”,而不是一无所获。

基本上,我的问题是:如果0不等于“x”或“y”,它为什么跳过回显数组的第一个元素?

2 个答案:

答案 0 :(得分:4)

==为您排序类型。

0int,因此它会将yx转换为int。哪个不可解析为一个,并且将变为0.字符串&#39; 0x&#39;会变成0,会匹配!

使用!==

http://sandbox.onlinephpfunctions.com/code/bed936181e386ddfe75e4ef92771bf61ad2e7915

<?php

$arr = array(
    1,
    2,
    3,
    "x" => "aaa", 
    "y" => "bbb"
);

foreach($arr as $k => $v){

    if($k !=="y" && $k !== "x") {
        echo $v . " ";
    }

}
// result:
// 1 2 3 

source

答案 1 :(得分:2)

这是一个很好的,我认为我找到了修复,而不是在if语句的两个评估中使用!=,尝试使用!==所以,将你的if语句更改为:

if($k !== "y" && $k !== "x")

请参阅上面的Unamata Sanatarai答案,解释得非常好。