Tablica w PHP przechowuje listę wartości pod kluczami. Utwórz ją nawiasami kwadratowymi, $fruits = ['apple', 'banana', 'cherry'];, i odczytaj element po indeksie, $fruits[0]. Indeksy zaczynają się od 0, a count($fruits) podaje liczbę elementów.
Każda tablica w PHP to uporządkowana mapa: każda wartość leży pod kluczem. Gdy nie wybierasz kluczy, PHP numeruje je 0, 1, 2... i dostajesz tablicę indeksowaną. Gdy wybierasz je sam (['name' => 'Ada']), dostajesz tablicę asocjacyjną. Obie są tym samym typem array.
Tworzenie tablicy
Nawiasy kwadratowe to zwykła składnia. array() to starszy zapis, który daje dokładnie to samo. range() buduje listę liczb lub liter, a array_fill() powtarza jedną wartość.
Tablica w PHP może jednocześnie przechowywać wartości różnych typów, w tym inne tablice. Tablica tablic to tablica wielowymiarowa, zwykły sposób przechowywania wierszy danych.
Pierwszy i ostatni element
PHP nie ma ujemnych indeksów. $arr[-1] nie oznacza „ostatni”: szuka klucza o nazwie -1, a gdy go nie ma, PHP wypisuje Warning: Undefined array key -1. Użyj array_key_first() i array_key_last(), które działają też wtedy, gdy klucze nie zaczynają się od 0.
end($queue) także zwraca ostatnią wartość, ale jako efekt uboczny przesuwa wewnętrzny wskaźnik tablicy, więc wersja oparta na kluczu jest czytelniejszym wyborem.
Wypisywanie tablicy
echo $arr nie działa: wypisuje słowo Array i ostrzeżenie. Wybierz wyjście pasujące do zadania:
print_r($arr)dla czytelnego zrzutu podczas debugowania.var_dump($arr), aby zobaczyć też typ i długość każdej wartości.implode(', ', $arr), aby zamienić wartości w jeden string do wyświetlenia.json_encode($arr), aby wysłać tablicę do JavaScriptu lub API.
Strona o print_r i var_dump opisuje opcje formatowania, w tym wypisywanie tablicy wewnątrz HTML.
Przechodzenie po tablicy
foreach to pętla stworzona dla tablic: podaje każdą wartość, a na życzenie także klucz. Pętla for z indeksem działa również dla tablic indeksowanych, których klucze idą od 0 bez przerw.
Tablice są kopiowane, a nie współdzielone
Przypisanie tablicy do innej zmiennej albo przekazanie jej do funkcji daje kopię. Zmiana kopii nie rusza oryginału. Dodaj & do parametru, gdy funkcja ma zmienić tablicę wywołującego.
Funkcje tablicowe według zadania
PHP ma ponad 70 funkcji tablicowych. Oto te, których będziesz używać najczęściej, każda z własną stroną:
| Zadanie | Funkcja |
|---|---|
| Dodanie na koniec | array_push() lub $arr[] = |
| Liczba elementów | count() |
| Sprawdzenie, czy wartość istnieje | in_array() |
| Znalezienie klucza wartości | array_search() |
| Sprawdzenie, czy klucz istnieje | array_key_exists() |
| Łączenie tablic | array_merge() |
| Przekształcenie każdej wartości | array_map() |
| Zostawienie części wartości | array_filter() |
| Sortowanie | sort(), usort() i pokrewne |
| Usunięcie elementu | unset(), array_splice() |
| Pobranie fragmentu | array_slice() |
| Usunięcie duplikatów | array_unique() |
| String na tablicę i z powrotem | explode(), implode() |
Klucze, które po cichu się łączą
Klucze tablicy to liczby całkowite albo stringi, a PHP niektóre klucze konwertuje za ciebie. String wyglądający jak dziesiętna liczba całkowita, na przykład "1", staje się liczbą całkowitą 1, więc $a["1"] i $a[1] to to samo miejsce. "01" i "1.5" pozostają stringami. Dlatego tablica zbudowana z danych formularza lub pliku CSV może mieć mniej elementów, niż się spodziewasz.
Najczęściej zadawane pytania
Jak utworzyć tablicę w PHP?
Użyj nawiasów kwadratowych: $colors = ['red', 'green', 'blue'];. Pusta tablica to $items = [];. Starsza składnia array('red', 'green') robi to samo i nadal działa.
Jak wypisać tablicę w PHP?
echo nie wypisze tablicy (wypisuje słowo Array i ostrzeżenie). Użyj print_r($arr) dla czytelnego zrzutu, var_dump($arr), aby zobaczyć też typy, albo echo implode(', ', $arr), aby wypisać wartości w jednej linii.
Jak pobrać ostatni element tablicy w PHP?
Użyj $arr[array_key_last($arr)] (PHP 7.3+) albo end($arr). PHP nie ma ujemnych indeksów: $arr[-1] szuka klucza o nazwie -1, który zwykle nie istnieje.
Czy tablice w PHP są przekazywane przez wartość, czy przez referencję?
Przez wartość. $b = $a; daje $b własną kopię, więc zmiana $b nie zmienia $a. Aby zmodyfikować tablicę wywołującego wewnątrz funkcji, zadeklaruj parametr jako referencję: function add(array &$list).
Czym różni się tablica indeksowana od asocjacyjnej w PHP?
To ten sam typ. Tablica indeksowana ma klucze całkowite 0, 1, 2..., które PHP nadaje za ciebie; tablica asocjacyjna używa kluczy, które wybierasz sam, zwykle stringów takich jak 'name'. Jedna tablica może nawet łączyć oba rodzaje.