Itérables en PHP

SSL de confiance à partir de seulement 3.44 $
Publicités
Boucler pour PHP
Heure et date en PHP

Qu'est-ce qu'un Iterable en PHP ?

Un itérable est une valeur qui peut être itérée. C'est une excellente option pour garder une trace du nombre de fois que vous avez traversé une boucle. Par exemple, si vous souhaitez sortir d'une boucle après 10 itérations, vous pouvez simplement le faire en utilisant un itérable.

Comment utiliser les itérables en PHP

  • Un itérable est une valeur qui est acceptée par un foreach boucle.
  • PHP 7.1 a introduit ce type de pseudo-données et il peut être utilisé comme type de données de retour des fonctions. De plus, la fonction peut accepter des itérables comme argument.

Les itérables offrent une méthode simple pour suivre le nombre d'itérations tout en traitant les boucles, ce qui peut être utile dans certains scénarios. Il peut également être utilisé comme type de retour d'une fonction, et la fonction peut prendre des itérables comme arguments.

Comment vérifier si un objet est itérable

Pour déterminer si un objet est une instance des interfaces IteratorAggregate ou Iterator, utilisez l'opérateur instanceof. Par exemple:

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

Comment boucler sur un objet itérable

Vous pouvez utiliser le foreach loop pour boucler sur un objet itérable. Par example:

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

Créer votre propre classe Iterable

Vous devez Mettre en oeuvre l'interface IteratorAggregate et spécifiez le getIterator fonction pour construire votre propre classe itérable. Par exemple:

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

Questions et réponses

Q : Quels sont les différents types d'itérables en PHP ?
R : Tableaux, objets qui implémentent l'interface Iterator et les objets qui implémentent l'interface Traversable sont tous des exemples d'itérables en PHP.

Q : Pouvez-vous expliquer la différence entre Iterator et Traversable interfaces ?
A : L'itérateur interface offre une collection de méthodes pour parcourir un objet, telles que rewind, current, key, next et valid. L'interface Traversable, en revanche, indique simplement qu'une classe est traversable et ne nécessite aucune méthode spécifique pour être implémentée. Les classes implémentées par l'itérateur doivent également implémenter l'interface Traversable.

Q : À quoi sert IteratorAggregate interface?
R : L'interface IteratorAggregate vous permet d'itérer sur un objet en établissant un objet itérateur externe qui peut parcourir le contenu de l'élément. Cela permet à l'objet de créer sa propre méthode de parcours sans avoir besoin d'implémenter l'interface Iterator. Les classes qui implémentent cette interface doivent spécifier une seule méthode appelée getIterator, qui renvoie une instance d'un objet d'interface Iterator.

SSL de confiance à partir de seulement 3.44 $
Publicités

Q: Quelle est la différence entre foreach et for boucle lors de l'utilisation d'itérateurs?
A: Le foreach boucle est spécialement conçue pour fonctionner avec des itérateurs, elle appelle automatiquement le rewind méthode au début de la boucle et la valid méthode pour vérifier s'il y a plus d'éléments à itérer.

The for La boucle peut également être utilisée avec des itérateurs, mais nécessite que le programmeur appelle manuellement le rewind, valid, current, key et next méthodes aux points appropriés de la boucle.

Q : Comment utiliser Iterator avec Closure ?
R : Les fermetures peuvent être utilisées comme itérateurs en PHP. Pour ce faire, créez une instance de la classe IteratorIterator et alimentez-la en argument de votre fermeture. La fermeture ne doit prendre aucun paramètre et renvoyer un tableau contenant la clé et la valeur actuelles. Pour rendre les variables externes disponibles à l'intérieur de la fermeture, la fermeture doit en outre inclure une instruction use.

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

Ici, IteratorIterator la classe est utilisée pour itérer sur la ArrayIterator classe à laquelle est ensuite transmise la fonction de fermeture.

Des exercices:

  1. Que sont les itérables en PHP ?
  2. Comment parcourez-vous un tableau en utilisant une boucle for en PHP ?
  3. Comment parcourez-vous un tableau en utilisant une boucle foreach en PHP ?
  4. Comment parcourez-vous un objet en utilisant une boucle foreach en PHP ?
  5. Comment créez-vous un itérateur pour une classe personnalisée en PHP ?
  6. Comment utilisez-vous le yield mot clé pour créer une fonction génératrice en PHP ?

Réponses:

  1. Un itérable est un objet qui peut être itéré (bouclé), tel qu'un tableau ou un objet.
  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. Pour créer un itérateur pour une classe personnalisée, la classe doit implémenter le Iterator l'interface et définir le rewind, valid, current, key et next méthodes.
  6. function generator() { yield $value1; yield $value2; }
Boucler pour PHP
Heure et date en PHP
close

Restez à jour sur PHP !

Nous ne spammons pas !

SSL de confiance à partir de seulement 3.44 $
Publicités

en English
X
Remonter en haut