检查一个数组是否不是一个索引数组


Check if an array it not a indexed array

我需要检查一个特定的数组是否或索引。例如:

// 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;
function is_indexed($arr) {
  return (bool) count( array_filter( array_keys($arr), 'is_string') );
}

这是来自php.net的function.is-array:

function is_assoc($array) {
    return (is_array($array) && 0 !== count(array_diff_key($array, array_keys(array_keys($array)))));
}

函数

function isAssoc($arr)
{
    return array_keys($arr) !== range(0, count($arr) - 1);
}

您可以检查密钥[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'; }

示例:http://codepad.org/bxCum7fU