Menu

array_push() w PHP: dodawanie elementów do tablicy

array_push($arr, $value) dodaje jedną lub więcej wartości na koniec tablicy; $arr[] = $value robi to samo dla jednej wartości i jest szybsze. Dowiedz się, jak dodać element na koniec, na początek lub w środek tablicy, dodać klucz i wartość oraz uniknąć klasycznego błędu z wartością zwracaną.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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');.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ