Iterabili in PHP

SSL affidabile a partire da soli $ 3.44
Annunci
Looping per PHP
Ora e data in PHP

Che cos'è un Iterable in PHP?

Un iterabile è un valore che può essere iterato. È un'opzione eccellente per tenere traccia di quante volte hai attraversato un loop. Ad esempio, se desideri uscire da un ciclo dopo 10 iterazioni, puoi semplicemente farlo utilizzando un iterabile.

Come usare Iterables in PHP

  • Un iterabile è qualsiasi valore accettato da a foreach ciclo continuo.
  • PHP 7.1 ha introdotto questo pseudo-tipo di dati e può essere utilizzato come tipo di dati di ritorno delle funzioni. Inoltre, la funzione può accettare iterabili come argomento.

Gli iterabili forniscono un metodo semplice per tenere traccia del conteggio delle iterazioni durante la gestione dei cicli, che potrebbe essere utile in determinati scenari. Può anche essere usato come tipo di ritorno di una funzione, e la funzione può accettare gli iterabili come argomenti.

Come verificare se un oggetto è iterabile

Per determinare se un oggetto è un'istanza delle interfacce IteratorAggregate o Iterator, utilizzare l'operatore instanceof. Come esempio:

$obj = new MyClass();
if ($obj instanceof IteratorAggregate || $obj instanceof Iterator) {
  // object is iterable
}

Come eseguire il ciclo su un oggetto iterabile

È possibile utilizzare il foreach loop per eseguire il loop su un oggetto iterabile. Per esempio:

$iterable = new MyIterableClass();
foreach ($iterable as $value) {
  // do something with $value
}

Creare la tua classe Iterable

È necessario realizzare l'interfaccia IteratorAggregate e specificare il file getIterator funzione per costruire la tua classe iterabile. Come esempio:

class MyIterableClass implements IteratorAggregate {
  private $data = array();
  
  public function __construct($data) {
    $this->data = $data;
  }
  
  public function getIterator() {
    return new ArrayIterator($this->data);
  }
}

Q&A

D: Quali sono i diversi tipi di iterabili in PHP?
R: Array, oggetti che implementano l'interfaccia Iterator e gli oggetti che implementano l'interfaccia Traversable sono tutti esempi di iterabili in PHP.

D: Puoi spiegare la differenza tra Iterator e Traversable interfacce?
A: L'iteratore interfaccia offre una raccolta di metodi per scorrere un oggetto, come rewind, current, key, next e valid. L'interfaccia Traversable, d'altra parte, dice semplicemente che una classe è attraversabile e non richiede l'implementazione di alcun metodo specifico. Le classi implementate da iteratore devono anche implementare l'interfaccia Traversable.

D: A cosa serve IteratorAggregate interfaccia?
R: L'interfaccia IteratorAggregate consente di iterare su un oggetto stabilendo un oggetto iteratore esterno che può attraversare il contenuto dell'elemento. Ciò consente all'oggetto di creare il proprio metodo di attraversamento senza dover implementare l'interfaccia Iterator. Le classi che implementano questa interfaccia devono specificare un singolo metodo chiamato getIterator, che restituisce un'istanza di un oggetto interfaccia Iterator.

SSL affidabile a partire da soli $ 3.44
Annunci

D: Qual è la differenza tra foreach e for loop quando si usano gli iteratori?
R: Il foreach loop è specificamente progettato per funzionare con gli iteratori, chiama automaticamente il rewind metodo all'inizio del ciclo e il valid metodo per verificare se ci sono più elementi su cui eseguire l'iterazione.

The for loop può essere utilizzato anche con gli iteratori, ma richiede al programmatore di chiamare manualmente il rewind, valid, current, keye next metodi nei punti appropriati del ciclo.

D: Come utilizzare Iterator con chiusura?
R: Le chiusure possono essere utilizzate come iteratori in PHP. Per fare ciò, crea un'istanza della classe IteratorIterator e inserisci la tua chiusura come argomento. La chiusura non dovrebbe accettare parametri e restituire un array contenente la chiave e il valore correnti. Per rendere disponibili le variabili esterne all'interno della chiusura, la chiusura dovrebbe includere anche un'istruzione use.

$myArray = [1, 2, 3, 4];
$iter = new IteratorIterator(new ArrayIterator($myArray));
foreach ($iter as $key => $val) {
    echo $val . PHP_EOL;
}

Qui, IteratorIterator class viene utilizzata per iterare sul ArrayIterator class a cui viene poi passata la funzione di chiusura.

esercizi:

  1. Cosa sono gli iterabili in PHP?
  2. Come si esegue l'iterazione su un array utilizzando un ciclo for in PHP?
  3. Come si esegue l'iterazione su un array utilizzando un ciclo foreach in PHP?
  4. Come si esegue l'iterazione su un oggetto utilizzando un ciclo foreach in PHP?
  5. Come si crea un iteratore per una classe personalizzata in PHP?
  6. Come si usa il yield parola chiave per creare una funzione generatore in PHP?

Risposte:

  1. Un iterabile è un oggetto che può essere iterato (in loop), come un array o un oggetto.
  2. for ($i = 0; $i < count($array); $i++) { // code to be executed; }
  3. foreach ($array as $value) { // code to be executed; }
  4. foreach ($object as $property => $value) { // code to be executed; }
  5. Per creare un iteratore per una classe personalizzata, la classe deve implementare il Iterator interfaccia e definire il rewind, valid, current, keye next metodi.
  6. function generator() { yield $value1; yield $value2; }
Looping per PHP
Ora e data in PHP
close

Rimani aggiornato su PHP!

Non spammiamo!

SSL affidabile a partire da soli $ 3.44
Annunci

en English
X
Scorrere fino a Top