Quais são os benefícios do uso do SPL ArrayObject, ArrayIterator, RecursiveArrayIterator em vez de matrizes regulares?

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

  •  28-09-2019
  •  | 
  •  

Pergunta

Comecei a aprender PHP SPL da Arrayiterators e gostaria de saber quais são os benefícios de usar o SPL ArrayObject, ArrayIterator, RecursiveArrayIterator em vez de matrizes regulares?

a) Ouvi dizer que os loops usando iteradores SPL reduzirão o uso da memória (mas por quê?). Eu realmente não sei acreditar nisso ou não, porque não entendo como isso pode reduzir o uso da memória.

b) Falando sobre o RecursiveArrayIterator, podemos dizer que às vezes isso pode economizar algumas linhas de código (estamos usando uma construção para each em vez de 2+ (depende da dimensão da matriz)).

Provavelmente, minhas perguntas podem parecer muito fáceis para alguém, mas há pouca informação/documentação sobre o SPL.

obrigada

Foi útil?

Solução

O principal benefício que você está analisando para acesso eficiente de dados principalmente na área de legibilidade. Dessa forma, você pode usar o objeto como uma matriz em uma interação mais próxima com o PHP.

a) A maneira como você reduz o uso da memória é não fazendo uma cópia da matriz, mas se for feito corretamente no motor, deve ser uma nova referência até que a matriz seja modificada, ela é realmente copiada.

b) Essencialmente

Um bom exemplo disso seria o Simpxml extensão. O objeto PHP/XML com o qual você está interagindo também age como uma matriz que torna eficiente usar, porque você pode apenas encontrar ou acessar um dos elementos da lista. Você não precisa pegar uma matriz do objeto e, em seguida, iterar e fazer outra coisa com ele, se desejar o nome da tag ou um atributo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top