Arrays – Parte X – O ponteiro do array

Cada array tem um ponteiro que indica o elemento “atual” de uma matriz em uma iteração. O ponteiro é usado por um número de diferentes construções, mas só podem ser manipulados através de um conjunto de funções e não afeta a sua capacidade de acessar os elementos individuais da matriz, nem é afetada pela maioria dos “normais” as operações da matriz. O ponteiro é, na verdade, uma maneira prática de manipular uma matriz sem a necessidade de uma variável externa para fazer o trabalho.

A maneira mais direta de manipular o ponteiro de um array é através de uma série de funções projetadas especificamente para esta finalidade. Ao iniciar uma iteração sobre um array, o primeiro passo geralmente é resetar o ponteiro do array para redefinir sua possição inicial usando a função reset(), e depois disso, podemos seguir em frente ou para trás em uma posição usando prev() e next(), respectivamente . Em um determinado ponto, podemos acessar o valor do elemento atual usando current() e usando a sua key(). A seguir temos um exemplo:

$array = array(’foo’ => ’bar’, ’baz’, ’bat’ => 2);
function displayArray($array) {
reset($array);
while (key($array) !== null) {
echo key($array) .”: ” .current($array) . PHP_EOL;
next($array);
}
}
Aqui, nós criamos uma função que irá exibir todos os valores em um array. Primeiro, chamamos reset() para voltar o ponteiro interno do array. Em seguida, usando um loop while, exibimos a chave atual e o seu valor, usando as funções key() e current(). Por fim, avançamos o ponteiro do array, usando next(). O loop continuará até que não termos mais uma chave válida.

OBSERVAÇÃO: É importante compreender que não existe correlação entre o ponteiro do array e as chaves dos elementos do array. Passando à frente ou para trás por uma posição simplesmente lhe dá acesso aos elementos da array baseada em sua posição dentro dela, e não em suas chaves.
Caso você precise iterar pelo array de trás para frente usando ponteiros, você poderia na teoria iniciar a sua iteração do último elemento (usando o end() função para redefinir o ponteiro para a parte inferior do array) e em seguida fazendo o seu caminho para voltar ao início:


$a = array (1, 2, 3);
end($a);
while (key ($array) !== null) {
echo key($array) .”: ” .current($array) . PHP_EOL;
prev($array);
}
Observe como, nos dois últimos exemplos, checamos se a iteração deve continuar comparando o resultado da key() de um array com NULL. Isso só funciona porque nós estamos usando um operador sem identidade. utilizar o operador de desigualdade pode causar alguns problemas importantes, se um dos elementos do array tem uma chave que avalia inteiro zero.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree