PHP Como Verificar Se Um Array é 100% Sequencial

function isArrayFullySequential(array $array): bool {
    return count(array_filter($array, 'is_int', ARRAY_FILTER_USE_KEY)) === count($array);
}

Então… há algum tempo eu escrevi aqui no blog uma função para testar se um array era 100% associativo e no começo do texto eu comentei que não sabia quando você precisaria usar uma função como essa. Pois é, mordendo a língua eu acabei precisando agora testar o contrário, se um array era composto por índices 100% numéricos.

Ao integrar o sistema com uma API externa estruturada com XML tendo um elemento previsto com até 1000 ocorrências que seria carregado a partir de um array. Decidi por utilizar o índice do array como ID das ocorrências no XML, assim implantei o requisito de ter este array indexado 100% com chaves numéricas.

Ainda estou pensando se vou manter esta abordagem ou não, talvez eu acabe flexibilizando a carga do array e controle apenas o total de ocorrências.

De qualquer forma segue abaixo a função que valida se os índices numéricos do array estão dentro dos limítrofes esperados.

hasItemsIndexOutOfBounds(array $array): bool {
    $keys = array_keys($array);
    return count($keys)
        && (min($keys) < 1 || max($keys) > 1000);
}

Ea í, curtiu? Não sei quando você vai precisar usar usar uma destas funções, mas fica aí o exemplo pra quando aparecer a necessidade.

Deixe um comentário