PHP массив ассоциативный или последовательный ?

Опубликовано

Недавно возникла ситуация в которой нужно было проверить, что пришедший массив был ассоциативный или последовательный. Такой вот ответ возвращала платежная система. Он мог быть

"errors":{"amount":["The amount field is required."],"currency":["The currency field is required."]}

или вот таким

"errors":["IP address not allowed"]

Что бы правильно отобразить пользователю ошибки необходимо правильно распарсить пришедший ответ. Для этого мне помогла вот такая функция:

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

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on VK