quale si dovrebbe usare per manipolare dati, matrice o oggetto matrice? Come le manipolazioni di ricerca, ordinamento e altri array.Array PHP e ArrayObject
risposta
Il tipo di base è array
. Questa è una mappa di chiavi e valori che è possibile scrivere, leggere e accedere in un loop.
ArrayObject
è una classe che è possibile estendere per creare oggetti che si comportano come se fossero array. Implementa metodi come count
e sort
che consentono di trattare un oggetto come se si trattasse di un array. Fa parte della SPL (Standard PHP Library).
In genere si utilizza array
. Saprai quando avrai bisogno di ArrayObject
.
La maggior parte delle volte una matrice è tutto ciò che è necessario. ArrayObject è molto utile se esteso per funzionalità in particolari usi.
arrayObject è utile soprattutto quando è necessaria la serializzazione.
Inoltre è possibile creare la propria classe di raccolta estendendo arrayObject. Quindi puoi serializzare il tuo oggetto di classe per trasferire i dati.
per l'array di operazioni semplice e normale è più preferibile di arrayObject.
L'oggetto array può essere esteso e le funzioni sono sovrascritte. Per esempio, la funzione il vostro append() potrebbe formattare un numero a due cifre decimali prima di chiamare parent :: append()
In termini di prestazioni, non si noterà la differenza tra un array
e ArayObject
. Ho eseguito un semplice test. L'idea era di creare array usando array() e nuovo ArrayObject, e riempirli con un numero crescente di valori.
<?php
for($i = 0; $i < 2; $i++){
$method = $i == 0 ? 'array' : 'ArrayObject';
for($j = 0; $j < 7 ; $j++){
for($k = 0; $k < 100; $k++){
$max = pow(10,$j);
$array = $method == 'array' ? array() : new ArrayObject;
$time = explode(' ',microtime());
$sTime = $time[0] + $time[1];
for($l = 0; $l < $max; $l++){
$array[] = 'foo ' . $i . ':' . $j . ':' . $k . ':' . $l;
}
$time = explode(' ',microtime());
$eTime = $time[0] + $time[1];
$results[$method][$max][] = $eTime - $sTime;
}
}
}
?>
Risultati
method lines average (µs) difference between methods (µs)
array 1 2.470 -1.044
array 10 8.452 +0.315
array 100 71.862 +10.719
array 1,000 773.826 +141.962
array 10,000 7,868.731 -675.359
array 100,000 76,954.625 -17,665.510
array 1,000,000 801,509.550 -84,356.148
ArrayObject 1 3.514 +1.044
ArrayObject 10 8.137 -0.315
ArrayObject 100 61.142 -10.719
ArrayObject 1,000 631.864 -141.962
ArrayObject 10,000 8,544.090 +675.359
ArrayObject 100,000 94,620.135 +17,665.510
ArrayObject 1,000,000 885,865.698 +84,356.148
La media è il tempo medio di 100 test per ciascun metodo e ciascun numero di righe. La differenza tra i metodi è abbastanza insignificante (84 microsecondi quando si gestisce un milione di righe ...)
Ho eseguito questo test molte volte, e poiché le differenze sono sempre una questione di microsecondi, a volte un metodo è più efficiente durante un test, quindi meno efficiente durante il prossimo test ...
la scelta dipenderà delle vostre esigenze:
- se avete a che fare con gli array semplici, e fare un ciclo come
foreach()
o calcolare un medio, unoarray
è abbastanza, - se hai bisogno di iterazioni più complesse, ordinamento, filtraggio, ... è più facile espandere il
ArrayObject class
con il tuo iteratore, i metodi ...
- 1. Differenza tra ArrayIterator, ArrayObject e Array in PHP
- 2. ArrayObject, getIterator();
- 3. Funzioni array array e nativo php
- 4. Quali sono i vantaggi dell'utilizzo di SPL ArrayObject, ArrayIterator, RecursiveArrayIterator anziché di array regolari?
- 5. PHP explode e array index
- 6. Differenza PHP tra array() e []
- 7. PHP Foreach Array e oggetti
- 8. Array PHP di una stdClass, come ottenere i dati?
- 9. php foreach su un array e l'assegnazione di questo array
- 10. Array gerarchico PHP - Genitori e figli
- 11. Controllare e restituire i duplicati array php
- 12. Php Curl invia file E dati array
- 13. PHP array vs PHP Costante?
- 14. php array generation challange
- 15. php two dimention array
- 16. TextArea Array con PHP
- 17. PHP decomprimere array
- 18. php unire due array
- 19. PHP Array associativo Implode
- 20. Abbreviare array in PHP?
- 21. array globale in php
- 22. SimpleXMLElement to PHP Array
- 23. Confronto array PHP
- 24. Split un array in N Array - PHP
- 25. php json_encode big array
- 26. Oggetto PHP o array
- 27. php str_getcsv array issue
- 28. PHP read Javascript array
- 29. PHP Deep Extend Array
- 30. Array associativo multidimensionale (PHP)
Hai un esempio di cosa vuoi fare? – willoller
Ho bisogno di cercare, ordinare e altre complicate manipolazioni usando Array fondamentalmente per usarlo nell'algoritmo. Quindi ho bisogno di sapere qual è il migliore e più veloce. – Imrul