在做项目时,上线后遇到一个 BUG,有一个数组存储了下标从 ‘01’到‘18’ 总共18组数据。上线前测试了前几组数据,没问题。上线后,在用户选择‘15’时报错,找不到这个数据。查了一下代码,数据是没问题的,只是这里使用了‘===’来判断相等:
// $code 作为参数传入 foreach ($arr as $k => $v) { if ($k === $code) { // ... } }有可能是类型出问题了,测试一下:
<?php //请输入你的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 会自动将其转为数字!