Muitas vezes quando precisamos percorrer um array, precisamos saber quando o array chega ao seu fim para tomarmos uma certa decisão. Para fazer isto em PHP é muito simples, basta combinarmos a função end juntamente com a função array_keys.
A função end retorna o último elemento de um array. Já a função array_keys, lista todas as chaves de um array. Vamos ao exemplo:
<?php
$frutas = array(‘morango’ => ‘vermelho’, ‘maca’ => ‘verde’, ‘abacaxi’ => ‘amarelo’, ‘uva’ => ‘roxa’);
foreach ($frutas as $fruta => $cor){
if (end(array_keys($frutas)) == $fruta){
echo “$fruta e o ultimo item do array. Sua cor e $cor.”;
}}
?>
Simples! Até a próxima 😉
Apesar de conhecer a funcionalidade das funcoes end e array_keys nunca atinei de combinar as duas para a finalidade de verificar se chegamos ao fim de um array – eu sempre usava um contador e verificava se $contador == count($array)-1
No caso do seu exemplo, para melhorar um pouquinho em desempenho, eu atribuiria o nome da ultima chave numa variavel antes de percorrer o array para nao ter que executar end(array_keys($frutas)) inumeras vezes.
Boa Fábio. Não tinha me ligado nessa. Criando uma variável com o último elemento do array fica mais rápido mesmo, pois evita a chamada de duas funções (end() e array_keys())
Abraço.
$fimVetor = end(array_keys($frutas));
foreach ($frutas as $fruta => $cor){
if ($fimVetor == $fruta){
echo “$fruta e o ultimo item do array. Sua cor e $cor.”;
}
Com as atualizações do PHP, hoje em dia se usa assim (para não gerar erro no log):
$arrKeys = array_keys($frutas)
$endArr = end($arrKeys);
foreach ($frutas as $fruta => $cor) {
if ($endArr == $fruta) {
echo “{$fruta} é o ultimo item do array. Sua cor é {$cor}.”;
}
}