Quali sono i vantaggi dell'utilizzo dell'arrayobject SPL, dell'arrayiteratore, del ricorsivearrayiterator invece di array regolari?

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

  •  28-09-2019
  •  | 
  •  

Domanda

Ho iniziato a imparare PHP SPL dagli arrayteratori e mi piacerebbe sapere quali sono i vantaggi dell'utilizzo di arrayobject SPL, arrayiterator, ricorsivearrayiterator anziché array regolari?

A) Ho sentito che i loop usando iteratori SPL ridurranno l'utilizzo della memoria (ma perché?). Non so davvero di crederci o no perché non capisco come può ridurre l'utilizzo della memoria.

b) Parlando di ricorsivearrayiterator possiamo dire che a volte potrebbe salvare alcune righe di codice (stiamo usando una costruzione foreach invece di 2+ (dipende dalla dimensione dell'array)).

Probabilmente, le mie domande potrebbero sembrare molto facili per qualcuno, ma ci sono troppo poche informazioni/documentazione su SPL.

Grazie

È stato utile?

Soluzione

Il vantaggio principale che stai cercando un efficiente accesso ai dati principalmente nell'area della leggibilità. In questo modo puoi usare l'oggetto proprio come un array in un foreach, quindi un'interazione più stretta con PHP.

a) Il modo in cui riduci l'utilizzo della memoria è non effettuando una copia dell'array, ma se eseguito correttamente nel motore, dovrebbe essere un nuovo riferimento fino a quando l'array non viene modificato, è effettivamente copiato.

b) essenzialmente

Un buon esempio di questo sarebbe il Simplexml estensione. L'oggetto PHP/XML con cui stai interagendo si comporta anche come un array che lo rende efficiente da utilizzare perché puoi semplicemente forare o accedere a uno degli elementi all'interno dell'elenco. Non devi prendere un array dall'oggetto e quindi ripetere e fare qualcos'altro se si desidera il nome del tag o un attributo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top