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-我更新了我的答案,更清楚地描述了发生了什么