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.