在PHP中的Foreach循环问题

y3d*_*3di 7 php foreach loops

这是我的一些代码:(p只是echos plus添加换行符)

foreach ($vanSteps as $k => $reqInfo) 
{
    p($k);
    if ('van' == $k) { p('The key is the van, continue'); continue; }//continue if we reached the part of the array where van is key
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出:

0
The key is the van, continue
1
2
3
van
The key is the van, continue
Run Code Online (Sandbox Code Playgroud)

当键为0时,为什么if语句返回true?这个foreach循环处理当key == 0时应用的逻辑(以及任何其他键,除非键是'van'),这会混淆逻辑,因为当key为0时它返回true.

有帮助吗?

谢谢.

Cra*_*ack 12

使用===这种比较.当PHP比较字符串和整数时,它首先将字符串转换为整数值,然后进行比较.

比较运算符手动.


sal*_*the 6

在PHP 'van' == 0true.这是因为当==用于比较字符串和数字时,字符串将转换为数字(如下面的第二个链接所述); 这使得内部比较成为0 == 0当然true.

根据您的需求建议的替代方案是使用严格的相等比较===.

请参阅比较运算符字符串转换为数字