array_push($arr, $value) dodaje wartość na koniec tablicy. Dla pojedynczej wartości skrót $arr[] = $value; robi to samo bez wywołania funkcji i to jego używa większość kodu PHP. Oba zmieniają tablicę w miejscu.
array_push() przyjmuje tablicę przez referencję, więc modyfikuje przekazaną zmienną. Zwraca nową liczbę elementów, którą możesz zignorować.
array_push vs $arr[] =
Używaj $arr[] = $value dla jednej wartości: jest krótsze i omija wywołanie funkcji, co w dużej pętli ma znaczenie. Używaj array_push(), gdy masz kilka wartości do dodania w jednej instrukcji albo listę wartości do rozpakowania.
$arr[] = działa też na zmiennej, która jeszcze nie istnieje: PHP tworzy tablicę. array_push() potrzebuje istniejącej tablicy: na niezdefiniowanej zmiennej rzuca TypeError: array_push(): Argument #1 ($array) must be of type array, null given.
Dodawanie klucza i wartości
array_push() dopisuje wartości tylko z następnym kluczem całkowitym. Aby dodać nazwany klucz, przypisz do niego. Aby dodać kilka par naraz, użyj += (zachowuje istniejące klucze) albo array_merge() (wygrywają nowe wartości).
Różnicę między + a array_merge() przy kolizji kluczy opisuje strona o array_merge.
Dodawanie na początek: array_unshift
array_unshift($arr, $value) wstawia na początek. Klucze całkowite są numerowane od nowa, więc nowa wartość dostaje indeks 0; klucze tekstowe pozostają bez zmian. Podobnie jak array_push() przyjmuje kilka wartości i zwraca nową liczbę elementów.
Aby nazwana para znalazła się na początku, zbuduj nową tablicę: $menu = ['login' => '/login'] + $menu;.
Wstawianie na konkretną pozycję
array_splice($arr, $offset, 0, $values) wstawia bez usuwania czegokolwiek: zaczyna od $offset, usuwa 0 elementów i umieszcza tam nowe wartości. Klucze całkowite za punktem wstawienia są numerowane od nowa.
array_splice() potrafi też usuwać i zastępować elementy; te formy pokazuje strona o usuwaniu elementów.
Dopisanie innej tablicy
array_push($a, $b) dodaje $b jako jeden zagnieżdżony element, czego rzadko się chce. Aby dodać wartości $b po kolei, rozpakuj je albo zbuduj nową tablicę składnią rozpakowania lub przez array_merge().
Częsty błąd: przypisanie wartości zwracanej
array_push() zwraca liczbę, czyli nową liczbę elementów. Przypisanie jej z powrotem do zmiennej z tablicą zastępuje tablicę liczbą całkowitą, a następne array_push() na niej rzuca TypeError.
To samo dotyczy array_unshift() i sort(), która zwraca true. Funkcje zmieniające tablicę w miejscu zwracają status, a nie tablicę.
Najczęściej zadawane pytania
Czym różni się array_push od $arr[] w PHP?
Oba dopisują na koniec. $arr[] = $x; dodaje jedną wartość bez wywołania funkcji, więc to zwykły wybór i jest odrobinę szybszy. array_push($arr, $a, $b, $c) przydaje się, gdy dodajesz kilka wartości naraz, i zwraca nową liczbę elementów.
Jak dodać klucz i wartość do tablicy w PHP?
Przypisz do klucza: $arr['color'] = 'blue';. array_push() tego nie potrafi, bo zawsze używa następnego klucza całkowitego. Aby dodać kilka par naraz, użyj $arr += ['a' => 1, 'b' => 2]; albo array_merge().
Jak dodać element na początek tablicy w PHP?
Użyj array_unshift($arr, $value). Numeruje od nowa klucze całkowite, więc nowa wartość dostaje indeks 0; klucze tekstowe pozostają bez zmian.
Dlaczego moja tablica zamienia się w liczbę po array_push?
Bo array_push() zwraca nową liczbę elementów, a nie tablicę. Zapis $arr = array_push($arr, 'x'); zastępuje tablicę tą liczbą. Wywołuj funkcję w osobnej linii: array_push($arr, 'x');.