Saltar al contenido

¿Cómo verificar si la matriz de PHP es asociativa o secuencial?

Solución:

Ha hecho dos preguntas que no son del todo equivalentes:

  • En primer lugar, cómo determinar si una matriz tiene solo teclas numéricas
  • En segundo lugar, cómo determinar si una matriz tiene secuencial teclas numéricas, a partir de 0

Considere cuál de estos comportamientos realmente necesita. (Puede ser que cualquiera de los dos sirva para sus propósitos).

La primera pregunta (simplemente comprobar que todas las teclas son numéricas) la responde bien el Capitán kurO.

Para la segunda pregunta (verificar si la matriz tiene un índice cero y es secuencial), puede usar la siguiente función:

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

var_dump(isAssoc(['a', 'b', 'c'])); // false
var_dump(isAssoc(["0" => 'a', "1" => 'b', "2" => 'c'])); // false
var_dump(isAssoc(["1" => 'a', "0" => 'b', "2" => 'c'])); // true
var_dump(isAssoc(["a" => 'a', "b" => 'b', "c" => 'c'])); // true

Para simplemente verificar si la matriz tiene claves no enteras (no si la matriz está indexada secuencialmente o indexada a cero):

function has_string_keys(array $array) {
  return count(array_filter(array_keys($array), 'is_string')) > 0;
}

Si hay al menos una clave de cadena, $array se considerará una matriz asociativa.

Seguramente esta es una mejor alternativa.

<?php
$arr = array(1,2,3,4);
$isIndexed = array_values($arr) === $arr;
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.