Как проверить, что массив ассоциативен в PHP

Массив является «ассоциативным», если он не имеет последовательных числовых ключей, начинающихся с нуля.

<?php
function isAssoc(array $array){
    $keys = array_keys($array);
    return array_keys($keys) !== $keys;
}

//using
var_dump(isAssoc(['test'=>'associative','1'=>'integer'])); // true
var_dump(isAssoc(['test','integer','associative'])); // false

Если ваш массив не начинается с «0» или ключи не по порядку, вы можете проверить все ключи, если они являются числами

<?php
function isAssoc($a) {
    foreach(array_keys($a) as $key)
        if (!is_int($key)) return true;
    return false;
}

//using
var_dump(isAssoc(['test','integer','associative'])); // false
var_dump(isAssoc([1=>'test',2=>'integer',100=>'associative'])); // false
Валидаторы PHP 35
Поделитесь с другими:

Если материал понравился Вам и оказался для Вас полезным, поделитесь им со своими друзьями!