Início / PHP e programação de sites / PHP: Como ler os elementos de um array

PHP: Como ler os elementos de um array



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?

Comentários

comments

Leia também

php

Como usar o PHP em modo seguro

Uma das técnicas que podem ser implementadas para aumentar ainda mais a segurança de um site ...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *