Php 关联数组与整数索引数组的键数组比较

Php 关联数组与整数索引数组的键数组比较,php,arrays,associative-array,Php,Arrays,Associative Array,我编写了以下代码来检查数组是否关联 function is_associative( $arr ) { $arr = array_keys( $arr ); return $arr != array_keys( $arr ); } 对于以下数组,它返回true: array("a" => 5,"b" => 9); 对于数值数组,则为false 但对于具有单个元素的关联数组,它不会返回true,例如: array("a" =>9); 对于具有单个元素的关联数

我编写了以下代码来检查数组是否关联

function is_associative( $arr ) {
    $arr = array_keys( $arr );
    return $arr != array_keys( $arr );
}
对于以下数组,它返回true:

array("a" => 5,"b" => 9);
对于数值数组,则为false

但对于具有单个元素的关联数组,它不会返回true,例如:

array("a" =>9);

对于具有单个元素的关联数组,为什么返回false?

您需要使用
==在您的比较中:

return $arr !== array_keys( $arr );
这就产生了两者都为真的结论

其他类型的杂凑将考虑单个元素数组的值相等:

array(1) { [0]=> string(1) "a" } 
array(1) { [0]=> int(0) }

在这里,
“a”==0
是真的(因为“a”被无声地转换为0),但是
“a”==0
是假的。

为什么当它是单元素数组时它们不是同一类型?@JinuJD-我更新了我的答案,更清楚地描述了发生了什么