Czy możesz mi powiedzieć, jak usunąć element z tablicy? Myślisz, że to jest dobre?Jaki jest najlepszy sposób na usunięcie elementu tablicy w PHP?
Odpowiedz
To zależy:
$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
Ogólnie unset()
jest bezpieczny dla hashtables (String-tablice indeksowane), ale jeśli trzeba polegać na ciągłych indeksów numerycznych musisz użyć jednej array_splice()
lub kombinacja unset()
i array_values()
.
Wspólna droga:
Według manual
unset($arr[5]); // This removes the element from the array
przefiltrowanej sposób:
Istnieje również funkcja array_filter() dbać o tablicach filtrujących
$numeric_data = array_filter($data, "is_numeric");
Aby uzyskać indeks sekwencyjnym można korzystać
$numeric_data = array_values($numeric_data);
Referencje
PHP – Delete selected items from an array
Peter, dziękuję. – lovespring
To zależy. Jeśli chcesz usunąć element bez powodowania przerw w indeksach, trzeba użyć array_splice:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
wyjściowa:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
Korzystanie rozbrojony może pracować, ale wynika to w sposób nieciągły indeksu. Czasami może to być problem, jeśli iteracyjne nad tablicy przy użyciu count ($ A) - 1 jako miara górna granica:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
wyjściowa:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
Jak widać, liczba jest teraz 3, ale indeks ostatniego elementu jest również 3.
Moje zalecenie polega więc na użyciu array_splice dla tablic z indeksami numerycznymi, i użycie unset tylko dla tablic (naprawdę słowniki) z nieliczbowymi indeksami.
alternatywnie możesz wywołać 'unset ($ a [2]); $ a = array_values ($ a); ' – nickf
- 1. Jaki jest najlepszy sposób na usunięcie pierwszego elementu z tablicy?
- 2. Jaki jest najlepszy sposób na usunięcie wiersza tabeli z jQuery?
- 3. Najlepszy sposób na usunięcie wszystkich elementów z tablicy ActionScript?
- 4. Jaki jest najlepszy sposób wyczyszczenia tablicy łańcuchów?
- 5. Jaki jest najlepszy sposób na przetasowanie tablicy w Perlu?
- 6. Jaki jest najlepszy sposób na zapisanie zawartości tablicy ArrayList?
- 7. Najlepszy sposób na usunięcie elementu z tablicy bez zmiany jej rozmieszczenia
- 8. Jaki jest najlepszy sposób aktualizacji obiektu w tablicy w ReactJS?
- 9. Jaki jest najlepszy sposób przechowywania tablicy w relacyjnej bazie danych?
- 10. Jaki jest najlepszy sposób na usunięcie właściwości z zagnieżdżonego obiektu javascript?
- 11. Najbardziej elegancki sposób na usunięcie elementu ciągowego
- 12. Jaki jest najlepszy sposób na seed srand()?
- 13. Jaki jest najlepszy sposób integracji dispatchera zdarzeń w bibliotece PHP?
- 14. Jaki jest najlepszy sposób na wdrożenie "timera"?
- 15. Jaki jest najprostszy sposób na usunięcie pustych NSStrings z NSArray?
- 16. Jaki jest najlepszy sposób na naukę CUDA?
- 17. Jaki jest najlepszy sposób dodawania przedziału czasu w PHP?
- 18. Jaki jest najlepszy sposób liczenia odsłon w PHP/MySQL?
- 19. Jaki jest najlepszy sposób na skopiowanie listy?
- 20. Jaki jest najlepszy sposób na naukę Erlanga?
- 21. Jaki jest najlepszy sposób sprawdzenia, czy URL istnieje w PHP?
- 22. Jaki jest najlepszy sposób przechowywania zmiennych konfiguracyjnych w PHP?
- 23. Jaki jest najlepszy sposób na obsługę zdarzeń w Ember.js?
- 24. jaki jest najlepszy sposób przekonwertować hash rubinowy do tablicy
- 25. Jaki jest najlepszy sposób na analizowanie strony internetowej w Ruby?
- 26. Jaki jest standardowy sposób na usunięcie elementu z listy w OCaml?
- 27. Jaki jest najlepszy sposób tworzenia wyszukiwania whois?
- 28. Jaki jest najlepszy sposób utworzenia tablicy podrzędnej z istniejącej tablicy w C++?
- 29. Najlepszy sposób na urldecode (php) w NodeJS
- 30. Jaki jest najlepszy sposób debugowania wywołań AJAX do PHP?
Dlaczego używałbyś unset w połączeniu z wartościami array_values zamiast array_splice? – John
@John: Jeden scenariusz, o którym mogę pomyśleć to, kiedy chcesz usunąć kilka przedmiotów z jednej tablicy. Z 'unset()' -way możesz usunąć wartości bez myślenia o zmianie kluczy - jeśli skończysz, uruchom tablicę przez 'array_values ()' aby znormalizować indeksowanie. To jest czystsze i szybsze niż używanie 'array_splice()' kilka razy. –