Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo se puede comprobar si un array PHP es asociativo o escalar?

7 de diciembre de 2011

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

#1

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