array_keys
array_keys($array, $search_value, $strict)
Zwraca nową tablicę ze wszystkimi kluczami podanej tablicy. Z drugim parametrem zwraca tylko klucze elementów, które mają szukaną wartość.
Parametry
- $array – tablica, której klucze chcesz otrzymać.
- $search_value – opcjonalny. Zwracane są tylko klucze elementów o tej wartości.
- $strict – opcjonalny, domyślnie false. Przy true wartości są porównywane łącznie z typem (===).
Przykłady
print_r(array_keys(array("name" => "Jan", "age" => 30))); // Array ( [0] => name [1] => age )
print_r(array_keys(array("a", "b", "c"))); // Array ( [0] => 0 [1] => 1 [2] => 2 )
// tylko klucze z określoną wartością
print_r(array_keys(array("Jan" => "Gdynia", "Anna" => "Sopot", "Piotr" => "Gdynia"), "Gdynia")); // Array ( [0] => Jan [1] => Piotr )
// ile razy wartość występuje w tablicy
echo count(array_keys(array("a", "b", "a"), "a")); // 2
// domyślne porównanie jest luźne: 1, "1" i true są równe
print_r(array_keys(array(1, "1", true, "a"), 1)); // Array ( [0] => 0 [1] => 1 [2] => 2 )
print_r(array_keys(array(1, "1", true, "a"), 1, true)); // Array ( [0] => 0 )
// klucz zapisany jako liczba w cudzysłowie jest liczbą całkowitą
var_dump(array_keys(array("10" => "x"))[0]); // int(10)
// nazwy kolumn z wiersza danych
echo implode(";", array_keys(array("id" => 1, "name" => "Kawa", "price" => 12))); // id;name;price
// pierwszy i ostatni klucz (od PHP 7.3)
$array = array("a" => 1, "b" => 2, "c" => 3);
echo array_key_first($array) . array_key_last($array); // ac
Na co uważać
- Domyślnie szukana wartość jest porównywana luźno (==). Jeśli w tablicy mieszanych typów szukasz null albo ciągu znaków, ustaw trzeci parametr na true, w przeciwnym razie wynik różni się też między PHP 7 a PHP 8 (porównanie liczby z ciągiem znaków).
- Klucze zapisane jako liczba całkowita w cudzysłowie („10”) PHP przechowuje jako liczby całkowite. Pamiętaj o tym przy ścisłym porównywaniu kluczy.
- Zwraca tylko klucze pierwszego poziomu i nie wchodzi do tablic zagnieżdżonych.
- Czy klucz istnieje, ustalisz funkcją array_key_exists() albo isset(). in_array($key, array_keys($array)) robi to samo, tylko niepotrzebnie wolno.
- Pierwszy klucz z określoną wartością zwraca array_search(), wszystkie takie klucze array_keys.
- Nie bierz nazw kolumn do zapytania SQL z kluczy tablicy, która przyszła od użytkownika ($_POST). Klucze to dane wejściowe jak każde inne – porównaj je z listą dozwolonych nazw.
Powiązane funkcje:
array_values()
array_search()
array_key_exists()
array_key_first()
array_change_key_case()