在做项目时,上线后遇到一个 BUG,有一个数组存储了下标从 ‘01’到‘18’ 总共18组数据。上线前测试了前几组数据,没问题。上线后,在用户选择‘15’时报错,找不到这个数据。查了一下代码,数据是没问题的,只是这里使用了‘===’来判断相等:
foreach (
$arr as $k =>
$v) {
if (
$k ===
$code) {
}
}
有可能是类型出问题了,测试一下:
<?php
$arr = array(
'01' => "hello",
'10' => "world",
'0' => "hello",
6 => "hello",
'1' => "hello",
'3.14' => "ww",
);
echo '<pre/>';
foreach ($arr as $k => $v) {
var_dump($k);
}
echo ('--------------').PHP_EOL;
var_dump('01');
var_dump('10');
输出如下:
string(
2)
"01"
int(
10)
int(
0)
int(
6)
int(
1)
string(
4)
"3.14"
--------------
string(
2)
"01"
string(
2)
"10"
对于可以转为数字的下标,PHP 会自动将其转为数字!
转载于:https://www.cnblogs.com/kika/p/10851572.html