PHP: получение типа массива - PullRequest
2 голосов
/ 24 мая 2009

Есть ли функция php, которую кто-то может использовать для автоматического определения, является ли массив ассоциативным или нет, кроме явной проверки ключей массива?

Ответы [ 5 ]

15 голосов
/ 24 июля 2009

Мой короткий ответ: ДА

Быстрее и проще, ЕСЛИ вы делаете предположение, что «неассоциативный массив» индексируется начиная с 0:

if ($original_array == array_values($original_array))
9 голосов
/ 24 мая 2009

цитируется с официального сайта:

Индексированный и ассоциативный массив типы одинакового типа в PHP,

Так что лучшее решение, которое я могу придумать, - это запуск на всех ключах или использование array_keys, implode, is_numeric

2 голосов
/ 24 июля 2009
function is_associative_array($array) {
    return (is_array($array) && !is_numeric(implode("", array_keys($array))));
}

Проверка ключей работает хорошо.

1 голос
/ 24 мая 2009

Краткий ответ: нет.

Длинный ответ: Ассоциативные и индексированные массивы одного типа в PHP. Индексированные массивы являются подмножеством ассоциативных массивов, где:

  • Ключи только целые;
  • Они варьируются от 0 до N-1, где N - размер массива.

Вы можете попытаться обнаружить это, если хотите, используя array_keys (), сортировку и сравнение с результатом range ().

1 голос
/ 24 мая 2009

Проверьте обсуждение на is_array .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...