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.