PHP considera que todos los arrays son asociativos, por lo que no hay ninguna función PHP disponible para comprobar si un array es realmente asociativo o escalar. ¿Alguien me puede recomendar un buen método para comprobar el tipo de un array PHP?
En concreto, lo que me gustaría es detectar este tipo de diferencias:
$arrayEscalar = array('apple', 'orange', 'tomato', 'carrot'); $arrayAsociativo = array( 'fruit1' => 'apple', 'fruit2' => 'orange', 'veg1' => 'tomato', 'veg2' => 'carrot' );
Estás leyendo una traducción autorizada de la pregunta
How to check if PHP array is associative or sequential?
planteada por Wilco
en StackOverflow.
Respuestas
Hace poco tuve que resolver este problema y definí la siguiente función para detectar si un array PHP es escalar o asociativo:
function es_asociativo($array) { return (bool) count(array_filter(array_keys($array), 'is_string')); }
Esta función asume lo siguiente:
is_array($array) == true
- Si al menos una de las claves del array es una cadena de texto, el array se considera de tipo asociativo.
¡Espero que te sirva!
@librosweb
4 octubre 2014, 20:28