我需要检查特定阵列是否键入或编入索引。例如:
// Key defined array
array('data-test' => true, 'data-object' => false);
// Indexed array
array('hello', 'world');
我可以轻松地使用数组键执行foreach
来检查是否所有都是整数。但是存在正确的检查方法吗?一个内置的PHP函数?
可能的解决方案
// function is_array_index($array_test);
// $array_test = array('data-test' => true, 'data-object' => false);
foreach(array_keys($array_test) as $array_key) {
if(!is_numeric($array_key)) {
return false;
}
}
return true;
答案 0 :(得分:2)
function is_indexed($arr) {
return (bool) count( array_filter( array_keys($arr), 'is_string') );
}
答案 1 :(得分:1)
function is_assoc($array) {
return (is_array($array) && 0 !== count(array_diff_key($array, array_keys(array_keys($array)))));
}
答案 2 :(得分:1)
功能
function isAssoc($arr)
{
return array_keys($arr) !== range(0, count($arr) - 1);
}
应该有用。
答案 3 :(得分:0)
您可以检查密钥[0]
:
$arr_str = array('data-test' => true, 'data-object' => false);
$arr_idx = array('hello', 'world');
if(isset($arr_str[0])){ echo 'index'; } else { echo 'string'; }
echo "\n";
if(isset($arr_idx[0])){ echo 'index'; } else { echo 'string'; }