7
votes

SPL vs tableau: Quand devrions-nous utiliser SPL et quand devrions-nous utiliser un tableau dans PHP?

en Java et C ++ lorsque nous ne connaissons pas la taille - tableau non utilisé comme dans PHP, utilisée plutôt que LinkedList, etc.

Dans PHP existez SPL, mais la plupart des programmeurs utilisent la matrice, pourquoi (parce que les gens ne savent pas sur SPL)?

Lorsque nous devrions utiliser une matrice dans PHP et WHENSPL et quelle est la différence dans ce cas entre PHP et Java / C ++?


4 Réponses :


1
votes

Utiliser des tableaux standard, il est plus rapide que ArrayObject.

Utilisez ArrayObject uniquement pour implémenter vos propres tableaux spécifiés avec vos méthodes personnalisées.



3
votes

Chaque demande PHP doit initialiser toutes les variables et après la demande, elles sont libérées. Étant donné que cela ne concerne pas souvent des situations dans lesquelles des structures de données spéciales (comme MaxHeap, LinkedList ou la file d'attente) sont plus efficaces que la matrice. Les matrices sont également beaucoup plus simples à comprendre et à utiliser pour débutant.

Différence à partir de C ++ en PHP est que la longueur des tableaux est dynamique. Vous pouvez ajouter des éléments quand vous le souhaitez. P> xxx pré>

Vous pouvez créer de manière dynamique et ajouter une matrice à un autre tableau p> xxx pré>

Ceci sera Créez une nouvelle matrice, ajoutez l'élément avec valeur 5 et ajoutez-le sous l'élément à l'array $ Arra. P>

$arr['somekey']='somevalue';


2 commentaires

Le tableau PHP Dinamic PHP signifie que chaque fois que ce nouvel élément inséré a créé un nouveau tableau créé. Ou par exemple, la matrice PHP a une taille par défaut comme 100 cellules et augmente si la matrice a besoin de plus de 100 cellules par multiplier 2 etc. ??


Chaque fois que nouvel élément est créé une nouvelle mémoire pour variable est attribué et une nouvelle mémoire pour le hachage est attribuée.



2
votes

Vous nous demandez de comparer deux choses massivement différentes choses, presque la seule similitude étant qu'ils sont à la fois (tableaux et SPL) disponibles dans PHP.

à cette fin, il serait essentiellement absurde de comparer directement ou de prescrire, quand on doit être utilisé sur l'autre pendant des moments où les deux pourraient être utilisés pour accomplir une tâche. Sur cette note, à la fois pourrait être utilisée d'une autre: par exemple, à l'aide de l'arrayiterator à itérer sur un tableau ou du tableau arayobject pour utiliser Syntaxe de style tableau lorsque vous travaillez avec des objets.

Vous semblez aussi être confus, ou tout simplement pas clair, de ce que le SPL est; Il n'est certainement pas restreint aux outils utilisés pour itérer les collections de choses. Voulez-vous dire de poser des questions sur des parties spécifiques de la bibliothèque ou êtes-vous peut-être juste de savoir ce qui est disponible?


1 commentaires

Je pense que je suis peu confus sur Spl Spl



0
votes

Pas nécessairement une confusion peut-être, car les gens peuvent décider d'utiliser "splstack" au lieu d'une matrice de vanille associée à des fonctions Array_Push / POP. Ou utiliser des tableaux de manière classique,

Et puis il existe SpldoublyLinkedList, SplQUEUE, SPLHHEAP. Plus ArrayObject.

La question est donc valide. Et la réponse est: vous faites la même chose de manière plus javaish, et c'est plus lent.

SPL En règle générale est une provision pour imiter les classes standard & "hors-la-étagère", comme exister dans C ++ & Java.

IMHO, il est venu trop tard.


0 commentaires