Mam pewne problemy z tablicą. Mam jedną tablicę, którą chcę zmodyfikować, jak poniżej. Chcę usunąć element (elementy) według indeksu, a następnie ponownie zindeksować tablicę. Czy to możliwe?
$foo = array(
'whatever', // [0]
'foo', // [1]
'bar' // [2]
);
$foo2 = array(
'foo', // [0], before [1]
'bar' // [1], before [2]
);
unset($foo[0], $foo[3], $bar[1]);
array_splice
i to nie działało dla 0-tego i 1-go wskaźnika.http://php.net/manual/en/function.array-splice.php
źródło
Lepiej użyj
array_shift()
. To zwróci pierwszy element tablicy, usunie go z tablicy i ponownie zindeksuje tablicę. Wszystko w jednej wydajnej metodzie.źródło
array_pop()
pobiera i usuwa ostatni element tablicy, jeśli jest to potrzebne. Jednak żadna z funkcji nie może działać tak, aby działała na element w środku tablicy.źródło
Nie wiem, dlaczego jest to lekceważone, ale jeśli ktoś zechce go wypróbować, zauważysz, że to działa. Użycie sortowania na tablicy powoduje ponowne przypisanie kluczy tablicy. Jedyną wadą jest to, że sortuje wartości. Ponieważ klucze zostaną oczywiście ponownie przypisane, nawet z
array_values
, nie ma znaczenia, czy wartości są sortowane, czy nie.źródło
Spróbuj z:
źródło
Oprócz odpowiedzi Xzyfera
Funkcja
Posługiwać się
Wynik
źródło
Jeśli użyjesz
array_merge
, spowoduje to ponowne indeksowanie kluczy. Podręcznik stanowi:http://php.net/manual/en/function.array-merge.php
To tutaj znalazłem oryginalną odpowiedź.
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset ()
źródło