Können Sie mir sagen, wie Sie ein Objekt aus dem Array löschen können? Denkst du, es ist gut?Was ist der beste Weg, um Array-Elemente in PHP zu löschen?
Antwort
Das hängt davon ab:
$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
Allgemeinen unset()
für Hashtables sicher ist (string-indizierte Arrays), aber wenn man auf kontinuierliche numerische Indizes verlassen werden Sie verwenden, um entweder array_splice()
oder eine Kombination aus unset()
und array_values()
.
der gemeinsame Weg:
Nach der manual
unset($arr[5]); // This removes the element from the array
Die gefilterten Weise:
Es besteht auch die array_filter() Funktion Pflege von Filteranordnungen aufzunehmen
$numeric_data = array_filter($data, "is_numeric");
Um ein sequentieller Index erhalten Sie
$numeric_data = array_values($numeric_data);
Referenzen
PHP – Delete selected items from an array
Peter, danke. – lovespring
Es hängt davon nutzen können. Wenn Sie wollen, um ein Element zu entfernen, ohne dass Lücken in dem Indizes, müssen Sie array_splice verwenden:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
Ausgang:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
ungesetzt Verwendung kann funktionieren, aber dies führt zu einem nicht-kontinuierlichen Index. Dies kann manchmal ein Problem sein, wenn Sie über das Array mit count ($ a) iterieren - 1 als Maß für die obere Grenze:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
Ausgang:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
Wie Sie sehen, count jetzt 3, aber der Index des letzten Elements ist auch 3.
Meine Empfehlung ist daher, array_splice für Arrays mit numerischen Indizes zu verwenden, und verwenden Sie nur für Arrays (Wörterbücher wirklich) mit nicht-numerischen Indizes deaktiviert.
alternativ könnten Sie 'unset ($ a [2]) aufrufen; $ a = array_values ($ a); ' – nickf
- 1. Was ist der beste Weg, um XLS-Datei in PHP
- 2. Was ist der beste Weg, um Ergebnisse in PHP paginieren
- 3. Was ist der beste Weg, um ein Verzeichnis zu leeren?
- 4. Was ist der beste Weg, Plones CSS-Cache zu löschen?
- 5. Android, Was ist der beste Weg, um AbstractThreadedSyncAdapter zu töten?
- 6. Was ist der beste Weg, um in C++ zu casten?
- 7. Was ist der beste Weg, QUERY_STRING in PHP zu verwalten?
- 8. Was ist der beste Weg, Konfigurationsvariablen in PHP zu speichern?
- 9. Was ist der beste Weg, PHP-Anwendungen zu erhalten?
- 10. Was ist der beste Weg, um Code zu organisieren?
- 11. Was ist der beste Weg, um eine Eigenschaft zu deklarieren?
- 12. Was ist der beste Weg, um einen InputStream zu überwachen?
- 13. Was ist der beste Weg, um jQuery zu lernen?
- 14. Was ist der beste Weg, um vorberechnete Daten zu implementieren?
- 15. Was ist der beste Weg, um eine Tabelle zu deduplizieren?
- 16. Was ist der beste Weg, um ähnliche Strings zu bearbeiten?
- 17. Was ist der beste Weg, um eine IllegalArgumentException zu fangen
- 18. Was ist der beste Weg, um mit OSGI zu beginnen?
- 19. Was ist der beste Weg, um innere Produkte zu bilden?
- 20. Was ist der beste Weg, um srand() zu säen?
- 21. Was ist der beste Weg, um mehrere Aktionen zu behandeln?
- 22. Was ist der beste Weg, um eine Sitemap zu erstellen?
- 23. Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?
- 24. Was ist der beste Weg, um eine Animation zu fahren?
- 25. Was ist der beste Weg, um einen "Timer" zu implementieren?
- 26. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
- 27. bash - Was ist der beste Weg, um Ergebnisse zu zählen?
- 28. Was ist der beste Weg, um einen ByteArrayOutputStream zu schließen?
- 29. Was ist der beste Weg, um REST-Webdienste zu nutzen?
- 30. Was ist der beste Weg, um eine Liste zu kopieren?
Warum würden Sie unset kombiniert mit array_values anstelle von array_splice verwenden? – John
@ John: Ein Szenario, über das ich nachdenken kann, ist, wenn Sie mehrere Elemente aus einem Array entfernen möchten. Mit dem 'unset()' - Weg können Sie die Werte entfernen, ohne über das Ändern von Schlüsseln nachdenken zu müssen - wenn Sie fertig sind, führen Sie das Array durch 'array_values ()' aus, um die Indizierung zu normalisieren. Das ist sauberer und schneller als die Verwendung von 'array_splice()' mehrmals. –