PHP的in_array和array_keys的问题
代码示例:
$list = [
'a' => 1,
'1' => 'x'
];
var_dump(in_array('1a', array_keys($list)));
var_dump(in_array('1', array_keys($list), true));
猜猜会分别返回什么。
输出结果:
bool(true)
bool(false)
这里有两个问题:
array_keys会将纯数字的文字变成整型。
打印array_keys($list)的结果:
array(2) { [0]=> string(1) "a" [1]=> int(1) }
- in_array建议默认使用宽松的比较,所以会出现1a也在数组key中的错误。
建议直接使用array_key_exists进行判断。