是否有命令知道数组的键是否为字符串或普通的int?
像:
$array1 = array('value1','value2','value3');
checkArr($array1); //> Returns true because there aren't keys as string
和
$array2 = array('key1'=>'value1','key2'=>'value2','value3');
checkArr($array2); //> Returns false because there are keys as string
注意:我知道我可以解析所有数组来检查它。
答案 0 :(得分:1)
测试它的“紧凑”版本是:
$allnumeric =
array_sum(array_map("is_numeric", array_keys($array))) == count($array);
@Gumbo的建议是短一个字母,对于大型阵列来说可能会更快一点:
count(array_filter(array_keys($array), "is_numeric")) == count($array);
答案 1 :(得分:0)
您可以使用array_keys获取数组的键,然后分析结果数组。
答案 2 :(得分:0)
如果值为int,请查看array_keys() - 如果是字符串,则查看内容 - >字符串
答案 3 :(得分:0)
如果你想检查数组的键,最好使用这样的东西:
reset($array);
while (($key = key($array)) !== null) {
// check the key, for example:
if (is_string($key)) {
// ...
}
next($array);
}
这将是最高效的,因为没有你将不会使用的变量的无关副本。
另一方面,这种方式可能是最具可读性的,并使意图清晰明了:
$keys = array_keys($array);
foreach($keys as $key) {
// check the key, for example:
if (is_string($key)) {
// ...
}
}
选择。
重要提示:
我上次检查时, PHP不会让您拥有整数字符串表示的键。例如:
$array = array();
$array["5"] = "foo";
echo $array[5]; // You might think this will not work, but it will
因此,当您检查这些键的类型时,请记住这一点:它们可能已经创建作为字符串,但PHP会将它们转换为幕后整数。