Menu

array_column() w PHP: jedna kolumna z wierszy tablicy

array_column($rows, 'email') zwraca pole email z każdego wiersza jako płaską tablicę. Poznaj argument klucza indeksu, indeksowanie wierszy po id, użycie z obiektami i znajdowanie wiersza przez array_search.

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

array_column($rows, $column) zwraca wartość $column z każdego wiersza listy wierszy. Zamienia tabelę rekordów w płaską tablicę jednego pola, czyli to, czego potrzebujesz przed implode, in_array, array_sum czy array_search.

Wiersze mogą pochodzić skądkolwiek: ze zdekodowanej odpowiedzi JSON, z pliku CSV albo z zapytania do bazy danych, które zwróciło tablicę tablic asocjacyjnych.

Klucz indeksu do budowania par klucz i wartość

Trzeci argument wskazuje pole, którego wartość staje się kluczem każdego wyniku. array_column($users, 'name', 'id') to zwykły sposób na zbudowanie mapy id na nazwę, na przykład dla listy <select>.

Jeśli dwa wiersze mają tę samą wartość indeksu, późniejszy wiersz nadpisuje wcześniejszy.

Indeksowanie całych wierszy po id przez null

Przekaż null jako kolumnę, aby zachować każdy pełny wiersz z nowym kluczem z pola indeksu. Wyszukanie wiersza po id to wtedy bezpośredni dostęp przez klucz zamiast pętli.

Zbuduj indeks raz, a każde kolejne wyszukanie będzie natychmiastowe, co ma znaczenie, gdy w pętli wyszukujesz wiele identyfikatorów.

Znajdowanie wiersza przez array_column i array_search

Aby znaleźć wiersz z daną wartością, przeszukaj kolumnę i użyj zwróconej pozycji. Sprawdź wynik przez !== false, bo dopasowanie w pierwszym wierszu zwraca 0.

To zakłada, że $users ma klucze 0, 1, 2, bo array_column zwraca listę. Jeśli tablica była filtrowana i ma luki, najpierw wywołaj array_values($users). Pułapkę false kontra 0 szczegółowo opisuje strona array_search.

Suma, liczba lub średnia kolumny

array_column dobrze współpracuje z funkcjami matematycznymi: wyciągnij pole, a potem je zsumuj.

Dla wartości obliczanej z kilku pól, jak ilość razy cena, narzędziem jest array_map, jak w ostatniej linii.

array_column z obiektami

Z listą obiektów array_column czyta właściwości publiczne. Właściwości prywatne i chronione są dla niego niewidoczne.

Drugie wywołanie zwraca pustą tablicę: password jest prywatne, więc każdy obiekt jest pomijany.

Wiersze z brakującym polem są pomijane

array_column nie wstawia wartości zastępczej dla wiersza, któremu brakuje pola. Wynik może być krótszy niż dane wejściowe, więc jego pozycje przestają odpowiadać wierszom.

Pierwszy wynik ma dwa telefony i żadnej wskazówki, że Bob nie miał numeru. Z imieniem jako kluczem indeksu widzisz, czyj jest który numer, i to bezpieczniejsza forma zawsze wtedy, gdy części wierszy może brakować pola.

Najczęściej zadawane pytania

Co robi array_column w PHP?

Przyjmuje listę wierszy (tablic lub obiektów) i zwraca wartość jednego pola z każdego wiersza: array_column($users, 'email') daje płaską tablicę e-maili. Wiersze, które nie mają tego pola, są pomijane.

Jak zrobić tablicę klucz i wartość z wierszy?

Przekaż pole klucza jako trzeci argument: array_column($users, 'name', 'id') zwraca [id => name, ...]. Przekaż null jako drugi argument, array_column($users, null, 'id'), aby zachować całe wiersze zaindeksowane po id.

Co robi array_column, gdy w wierszu brakuje pola?

Pomija ten wiersz, więc array_column($people, 'phone') może zwrócić mniej wartości, niż jest wierszy, a pozycje przestają się zgadzać. Dodaj klucz indeksu, array_column($people, 'phone', 'name'), aby widzieć, z którego wiersza pochodzi każda wartość.

Czy array_column działa z obiektami?

Tak, z tablicą obiektów czyta właściwości publiczne, a także właściwości udostępnione przez __get, gdy klasa definiuje __isset. Właściwości prywatne i chronione są pomijane.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ