PHP: Como ler os elementos de um array

Você está em busca de cursos de informática de qualidade? Confira os cursos que separamos para você, clicando aqui.

Uma das características mais comuns no uso de arrays está no fato de podermos ler seu conteúdo através de um loop e aplicar uma operação específica para cada elemento lido. Existem várias formas de efetuarmos a leitura dos elementos de um array, dependendo somente da forma ocmo estão ordenados (sequencialmente ou não).

Lendo arrays sequenciais

A forma mais simples de ler elementos de um array é utilizar a função count(). Através dela, determinamos o número total de elementos e fazemos a leitura através do comando for.

<?php
$estado = array(“RJ”,”MG”,”MA”);
$total_elementos = count ($estado);
// total_elementos terá o valor igual a 3.

for ($f =0; $f <=$total_elementos -1; $f++) {
 echo “Estado:  “.$estado[$f].”<br>”;
?>

O navegador irá exibir o seguinte resultado:

Estado: RJ
Estado: MG
Estado: MA

Note que no laço for a variável $f inicia com zero (arrays são zero-based) e tem seu limite em $total_elementos -1 (pois total_elementos é igual a 3).

É comum entre programadores suprimir o uso da variável $total_elementos através da substituição direta da função count() no laço for.

<?php
$estado = array(“RJ”,”MG”,”MA”);
// total_elementos terá o valor igual a 3.

for ($f =0; $f <= (count($estado)-1); $f++) {
 echo “Estado:  “.$estado[$f].”<br>”;
}

?>

Uma das razões para não fazermos isso é que cada iteração a função count() é chamada. A mais importante diz respeito à alteração do tamanho do array (função unset()) dentro do laço. Se executarmos a função unset, o array terá seu tamanho redimensionado, causando problemas na execução do laço. Vejamos o exemplo, onde o valor “RJ” será excluído do array.

<php
$estado = array(“RJ”,”MG”,”MA”);
 for ($f=0; $f <= (count($estado-1); $f++) {
 echo “Estado: “.$estado[$f]. “<br>”;
    if ($estado[$f]==”RJ” {
    unset ($estado[$f]);
    }
}
?>

Nesse exemplo, o elemento RJ será impresso e em seguido excluído do array, deixando-o somente dois elementos. Na próxima iteração count(…) não será mais igual a 3 e sim 2, fazendo com que o elemento MA nunca seja lido.

Estado: RJ
Estado: MG

Lendo arrays não sequenciais

Arrays possuem um ponteiro próprio (cursor) que mantém a informação sobre o elemento corrente criado. Quando é criado, esse cursor está sempre sobre o primeiro elemento. Para descobrirmos qual o elemento e o índice corrente, utilizamos a função current() e key(), respectivamente. Vejamos o exemplo:

<?php
 $estado = array (50=>”RJ”, 10=>”MG”, 20=”MA”);
 $estado[] = “ES”;
 $chave = key($estado);
 $valor = current($estado);
    echo “Elemento $chave igual a $valor”;
?>

Como o array foi recém-criado, o elemento corrente é o primeiro, logo o valor a ser visualizado será “Elemento 50 igual a RJ“. Note que RJ é o primeiro elemento atribuído no array, mesmo “MG” e “MA” possuindo índices menores que o dele (10 e 20, respectivamente). Arrays com esta característica não são ordenados até que seja utilizada uma função específica para essa tarefa.

As funções each() e list() podem ser utilizadas em conjunto para efetuar a leitura, através de um loop de arrays não ordenados sequencialmente. Vejamos um exemplo da utilização de ambas:]

<?php
 $estado = array(50=>”RJ”, 10=>”MG”, 20=>”MA”);
 $estado[]=”ES”;
 reset($estado);
 while (list($chave, $valor) = each ($estado)) {
  echo “Posição $chave é igual a $valor”.”<br>”;
}
?>

Vamos analisar o código acima. No laço de repetição while, vemos que para cada elemento lido do array é atribuído para a $chave o valor do índice do elemento corrente e para $valor o valor do elemento.

A função reset() “pointeira” para o primeiro elemento do array.

A função each() move o ponteiro do array para o próximo elemento toda vez que é chamada.

Veja abaixo o resultado obtido pelo código acima:

Posição 50 é igual a RJ
Posição 10 é igual a MG
Posição 20 é igual a MA
Posição 51 é igual a ES

Leia também – PHP: O que são arrays?

1 COMENTÁRIO

ENVIE UMA REPOSTA:

Por favor digite o seu comentário
Por favor digite o seu nome

Time limit is exhausted. Please reload the CAPTCHA.