Quels sont les avantages de l'utilisation de SPL ArrayObject, Arrayiterator, RecursiVeArrayiterator au lieu de tableaux réguliers?

StackOverflow https://stackoverflow.com/questions/4072927

  •  28-09-2019
  •  | 
  •  

Question

J'ai commencé à apprendre PHP SPL à partir de ArrayIterators et j'aimerais savoir quels sont les avantages de l'utilisation de SPL ArrayObject, Arrayiterator, RecursiVeArrayiterator au lieu de tableaux réguliers?

a) J'ai entendu dire que les boucles utilisant des itérateurs SPL réduiront l'utilisation de la mémoire (mais pourquoi?). Je ne sais pas vraiment croire cela ou non parce que je ne comprends pas comment réduire l'utilisation de la mémoire.

b) Parlant de recursivarrayiterator, nous pouvons dire que parfois cela pourrait économiser certaines lignes de code (nous utilisons une construction Forach au lieu de 2+ (dépend de la dimension du tableau)).

Probablement, mes questions peuvent sembler très faciles pour quelqu'un, mais il y a trop peu d'informations / documents sur SPL.

Merci

Était-ce utile?

La solution

Le principal avantage que vous envisagez d'accès efficace sur les données principalement dans le domaine de la lisibilité. De cette façon, vous pouvez utiliser un objet comme un tableau dans un foreach donc une interaction plus étroite avec PHP.

a) La façon dont vous réduisez l'utilisation de la mémoire est de ne pas faire de copie du tableau, mais si elle est effectuée correctement dans le moteur, elle devrait être une nouvelle référence jusqu'à ce que le tableau soit modifié, il est réellement copié.

b) essentiellement

Un bon exemple de cela serait le Simplexml extension. L'objet PHP / XML avec lequel vous interagissez agit également comme un tableau qui le rend efficace à utiliser, car vous pouvez simplement vous façonner ou accéder à l'un des éléments de la liste. Vous n'avez pas à prendre un tableau à partir de l'objet, puis à itérer et à faire autre chose avec si vous voulez le nom de balise ou un attribut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top