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)

这里有两个问题:

  1. array_keys会将纯数字的文字变成整型。

    打印array_keys($list)的结果:

        array(2) {
          [0]=>
          string(1) "a"
          [1]=>
          int(1)
        }
    
  2. in_array建议默认使用宽松的比较,所以会出现1a也在数组key中的错误。

建议直接使用array_key_exists进行判断。

标签: PHP

添加新评论