PHP iterável

Ao longo deste artigo, você aprenderá como os iteráveis ​​do PHP podem ser usados ​​para simplificar seu código e torná-lo mais fácil de ler, e como você pode usá-los para simplificar seu código e torná-lo mais fácil de entender.

Existe um tipo de dados conhecido como iterável em PHP, que é um tipo de dados que pode ser iterado com um loop foreach.

Há uma série de arrays e objetos que podem atravessar a interface Traversable.

O conceito de iteráveis ​​do PHP fornece uma maneira fácil de percorrer coleções de dados, obter algumas informações de cada item e executar operações neles.



PHP Iterável – O que é?

Php Iterables são quaisquer valores que podem ser passados ​​para um loop foreach() e repetidos um após o outro.

Existe um pseudo-tipo para iteráveis ​​introduzido no PHP 7.1, que pode ser usado como um tipo de argumento para funções e como um tipo de retorno para funções .


Usar iteráveis

Uma palavra-chave iterável pode ser usada de várias maneiras diferentes, como usá-la como um tipo de dados para um argumento de função ou como o modo de retorno de uma função.

Os seguintes argumentos podem ser usados ​​com um argumento de função iterável:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function printIterable(iterable $itr) {
foreach($itr as $item) {
echo $item;
}
}
$array = [1, 2, 3, 4];
printIterable($array);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Retorne iterável usando a função de tipo de dados iterável:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function getIterable() : iterable {
return [1, 2, 3];
}
$itr = getIterable();
foreach($itr as $item) {
echo $item;
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Nota : A conversão de método está obsoleta acima do PHP 7.1

Criar iterável

Matrizes

Uma matriz é iterável, o que significa que pode ser usada como argumento para uma função que requer um iterável como argumento.

Iteradores

Existem muitos objetos que implementam a interface Iterator que podem ser usados ​​como argumentos para funções que requerem um iterável como argumento.

Os iteradores podem ser usados ​​para percorrer uma lista de itens que contém uma lista de métodos para percorrê-los.

Existe um ponteiro que acompanha um dos elementos da lista.

Deve haver uma chave associada a cada item da lista que possa ser usada para localizar esse item na lista.

Os iteradores devem ter os seguintes métodos para funcionar:

  • current() : Retorna o ponteiro para o elemento atual ou, se não houver ponteiro, retorna o elemento atual. Qualquer tipo de dados é permitido
  • key() : Esta função retorna a chave associada ao elemento atualmente selecionado na lista. Um número só pode ser um inteiro, um float, um booleano ou uma string.
  • next() : Esta é uma função para mover o ponteiro para o próximo item em uma lista de itens
  • rewind() : Este método move o ponteiro de volta para o início da lista, para o primeiro elemento
  • valid() : Esta função deve retornar false se o ponteiro interno não estiver apontando para nenhum elemento (por exemplo, se essa é a posição em que next() foi chamado no final da lista), caso contrário, deve retornar true.

Implemente a interface Iterator como iterável e use-a para iterar sobre os dados:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
// Create an Iterator
class Number_Iterator implements Iterator {
private $data = [];
private $counter = 0;
public function __construct($data) {
// array_values() makes sure that the keys are numbers
$this->data = array_values($data);
}
public function current() {
return $this->data[$this->counter];
}
public function key() {
return $this->counter;
}
public function next() {
$this->counter++;
}
public function rewind() {
$this->counter = 0;
}
public function valid() {
return $this->counter < count($this->data);
}
}
// A function that uses iterables
function printIterable(iterable $numberIterator) {
foreach($numberIterator as $item) {
echo $item;
}
}
$iterator = new Number_Iterator([1,2,3,4,5]);
printIterable($iterator);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo de Explicação

No exemplo acima, definimos uma classe chamada Number_Iterator que implementa a interface Iterator. Essa interface requer a implementação de vários métodos, incluindo current(), key(), next(), rewind() e valid().

  • O método __construct() da classe Number_Iterator recebe uma matriz de números e inicializa a propriedade $data com seus valores, certificando-se de que as chaves sejam números sequenciais.
  • O método current() retorna o elemento atual do iterador, que é simplesmente o valor do índice atual no array $data.
    O método key() retorna o índice atual do iterador.
  • O método next() incrementa o índice atual do iterador.
  • O método rewind() redefine o índice atual do iterador para o início.
  • O método valid() retorna true se o índice atual for menor que o número total de elementos no array $data.
  • Depois de definir a classe Number_Iterator, o código define uma função chamada printIterable().
  • Essa função recebe um iterável como argumento e itera sobre ele usando um loop foreach.
Por fim, o código cria uma instância da classe Number_Iterator com uma matriz de números e a passa como um argumento para a função printIterable() . A função então itera sobre os números e os imprime na tela .
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone