Potresti dirmi come eliminare un elemento dall'array? Pensi che sia buono?Qual è il modo migliore per eliminare l'elemento dell'array in PHP?
risposta
che dipende:
$a1 = array('a' => 1, 'b' => 2, 'c' => 3);
unset($a1['b']);
// array('a' => 1, 'c' => 3)
$a2 = array(1, 2, 3);
unset($a2[1]);
// array(0 => 1, 2 => 3)
// note the missing index 1
// solution 1 for numeric arrays
$a3 = array(1, 2, 3);
array_splice($a3, 1, 1);
// array(0 => 1, 1 => 3)
// index is now continous
// solution 2 for numeric arrays
$a4 = array(1, 2, 3);
unset($a4[1]);
$a4 = array_values($a4);
// array(0 => 1, 1 => 3)
// index is now continous
Generalmente unset()
è sicuro per hashtables (array di stringhe-indicizzato), ma se si deve fare affidamento sugli indici numerici continui dovrete utilizzare array_splice()
o una combinazione di unset()
e array_values()
.
Il modo comune:
Secondo la manual
unset($arr[5]); // This removes the element from the array
Il modo filtrato:
C'è anche la funzione array_filter() prendersi cura di matrici filtranti
$numeric_data = array_filter($data, "is_numeric");
Per ottenere un indice sequenziale è possibile utilizzare
$numeric_data = array_values($numeric_data);
Riferimenti
PHP – Delete selected items from an array
Peter, grazie. – lovespring
Dipende. Se si desidera rimuovere un elemento senza causare lacune negli indici, è necessario utilizzare array_splice:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
uscita:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
Utilizzando impostata in grado di lavorare, ma questo si traduce in un indice non continuo. Questo a volte può essere un problema quando eseguire iterazioni su un array tramite conteggio ($ a) - 1 come misura del limite superiore:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
uscita:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
Come si vede, il conteggio è ora 3 ma l'indice dell'ultimo elemento è anche 3.
La mia raccomandazione è quindi di usare array_splice per gli array con indici numerici, e usare unset solo per gli array (dizionari davvero) con indici non numerici.
in alternativa puoi chiamare 'unset ($ a [2]); $ a = array_values ($ a); ' – nickf
- 1. Il modo migliore per eliminare l'istanza dell'applicazione
- 2. Qual è il rendimento migliore in PHP?
- 3. Qual è il modo migliore per eliminare tutta una tabella grande in t-sql?
- 4. Qual è il modo migliore in Android per eliminare tutte le righe da una tabella
- 5. Qual è il modo migliore per svuotare una directory?
- 6. Qual è il modo migliore per passare alla codifica MVC?
- 7. Qual è il modo migliore per creare una ricerca whois?
- 8. Qual è il modo migliore e più veloce per verificare se l'immagine è valida in PHP?
- 9. Qual è il modo migliore per convertire enum in stringa?
- 10. Qual è il modo migliore per creare frecce in inkscape?
- 11. Qual è il modo migliore per convertire String in ByteString
- 12. Qual è il modo migliore per analizzare questo in C++?
- 13. Qual è il modo migliore per aggiornare l'entità in JPA
- 14. Qual è il modo migliore per ritagliare un'immagine in HTML?
- 15. Qual è il modo migliore per scrivere commenti in C?
- 16. Qual è il modo migliore per creare il file XLS in PHP
- 17. Qual è il modo migliore per generare automaticamente getter e setter per una classe in php?
- 18. Qual è il modo migliore per "ripristinare" le modifiche?
- 19. Qual è il modo migliore per esportare enormi cataloghi Magento
- 20. Ibernazione: il modo migliore per eliminare elementi in una raccolta
- 21. Qual è il modo migliore per riutilizzare il parser Lua?
- 22. Qual è il modo migliore per documentare il codice f #?
- 23. Qual è il modo migliore per rilevare il colore bianco?
- 24. Qual è il modo migliore per testare un'app per rails?
- 25. Qual è il modo migliore per legare valori decimali/doppi/float con PDO in PHP?
- 26. Qual è il modo migliore per analizzare Paypal NVP in PHP?
- 27. Qual è il modo migliore per memorizzare le variabili di configurazione in PHP?
- 28. Qual è il modo migliore per salvare e caricare un registro attività in PHP?
- 29. Qual è il modo migliore per memorizzare le variabili di classe in PHP?
- 30. Qual è il modo migliore per generare output Excel in PHP?
Perché dovresti usare unset combinato con array_values piuttosto che array_splice? – John
@John: Uno scenario a cui posso pensare è quando si desidera rimuovere più elementi da un array. Con 'unset()' -way puoi rimuovere i valori senza dover pensare a cambiare le chiavi - se hai finito esegui l'array attraverso 'array_values ()' per normalizzare l'indicizzazione. È più pulito e più veloce dell'uso di 'array_splice()' diverse volte. –