SPL vs tableau: Quand devrions-nous utiliser SPL et quand doit-on utiliser le tableau en PHP?

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

  •  02-10-2019
  •  | 
  •  

Question

En Java et C ++ quand on ne connaît pas la taille -. Pas utilisé comme tableau en PHP, utilisé à la place chaînée etc

En PHP SPL existe, mais la plupart du temps des programmeurs tableau utiliser, pourquoi (parce que les gens ne connaissent pas SPL)?

Lorsque nous devrions utiliser le tableau en PHP et whenSPL et quelle est la différence dans ce cas entre PHP et Java / C ++?

Était-ce utile?

La solution

Demande PHP Chaque doit initialiser toutes les variables et après demande, ils sont libérés. À cause de cela ne vient pas souvent des situations où les structures de données spéciales (comme maxheap, chaînée ou file d'attente) sont plus efficaces que tableau. Présentation des tableaux sont beaucoup plus simples à comprendre et à utiliser pour les débutants.

Différence de C ++ en PHP est que la longueur des rangées est dynamique. Vous pouvez ajouter des éléments à chaque fois que vous voulez.

$arr=array();
$arr[]=5; //add integer to array
echo count($arr); //1
$arr[]=7;
echo count($arr); //2

vous pouvez dynamiquement créer et ajouter tableau à un autre tableau

$arr[]=array();
$arr[2][]=5;
echo count($arr); //3
echo count($arr[2]); //1

Cela va créer nouveau tableau, ajouter l'élément avec la valeur 5 et l'ajouter comme élément à un tableau $ arr.

$arr[][]=5;

Dans les tableaux PHP sont des tables de hachage, de sorte que vous pouvez non seulement entier clés mais aussi des chaînes:

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

Si l'élément de réseau est un entier, puis chaque élément nécessite une structure de valeur (zval) qui prend 16 octets. exige également un seau de hachage - qui prend 36 octets. Cela donne 52 octets par valeur. têtes d'allocation de mémoire prennent un autre 8 octets * 2 -. qui donne 68 octets

A propos des tableaux en PHP: http://oreilly.com/catalog/progphp/ chapitre / ch05.html

Autres conseils

Vous nous demandez de comparer deux massivement des choses différentes, presque la seule similitude étant qu'ils sont tous les deux (tableaux et le SPL) disponible en PHP.

À cette fin, il serait essentiellement absurde de comparer directement ou prescrire, quand on doit être utilisé sur l'autre pour les moments où les deux peuvent être utilisés pour accomplir une tâche. Sur cette note, deux peut être utilisé entremêlées:. Par exemple, en utilisant le ArrayIterator itérer sur un tableau, ou ArrayObject à faire usage de la syntaxe de style de tableau lorsque vous travaillez avec des objets

Vous semblez aussi être confus, ou tout simplement pas clair, sur ce que le SPL est; il a certainement est pas limité aux outils utilisés pour itérer sur des collections de choses. Vouliez-vous dire poser des questions sur les pièces spécifiques de la bibliothèque, ou êtes-vous peut-être tout simplement pas clair ce qui est disponible en elle?

Utilisez des tableaux standards, il est plus rapide que ArrayObject.

Utilisez ArrayObject uniquement pour mettre en œuvre vos propres tableaux spécifiés avec vos méthodes personnalisées.

Non necessarilly une confusion peut-être, parce que les gens peuvent décider d'utiliser « SplStack » au lieu d'un tableau de vanille associée à des fonctions array_push / pop. Ou les tableaux d'utilisation de manière classique,

et puis il existe SplDoublyLinkedList, SplQueue, SplHeap. en plus ArrayObject.

La question est valable. Et la réponse est:. Vous faire la même chose d'une manière plus javaish, et il est plus lent

SPL en général est une tentative de mimer la norme et "off-the-shelf" classes et API, comme il existe en C ++ et Java.

à mon humble avis, il est venu trop tard.

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