Array keys: примеры (PHP)

Использование array_keys для получения ключей массива
Раздел: Работа с массивами
array_keys(array $array, mixed $filter_value = null, bool $strict = false): array
Функция array_keys

Функция array_keys возвращает все или некоторое подмножество ключей массива. Она применяется, когда требуется получить индексы ассоциативного или числового массива для дальнейшей обработки, итерации или проверки наличия определённых значений.

Аргументы функции

Функция имеет три параметра:

  1. array (обязательный) — исходный массив, ключи которого необходимо извлечь.
  2. filter_value (необязательный) — если указан, функция возвращает только ключи, которым соответствует это значение.
  3. strict (необязательный) — флаг, определяющий использование строгого сравнения (===) при поиске filter_value. По умолчанию равно false.
Краткие примеры использования

Пример с одним аргументом:

<?php
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$keys = array_keys($array);
print_r($keys);
?>
Array
(
    [0] => a
    [1] => b
    [2] => c
)

Пример с указанием значения для фильтрации:

<?php
$array = ['a' => 'green', 'b' => 'blue', 'c' => 'green'];
$keys = array_keys($array, 'green');
print_r($keys);
?>
Array
(
    [0] => a
    [1] => c
)

Пример со строгим сравнением:

<?php
$array = [0 => '0', 1 => 1, 2 => true];
$keysStrict = array_keys($array, true, true);
$keysNonStrict = array_keys($array, true, false);
print_r($keysStrict);
print_r($keysNonStrict);
?>
Array
(
    [0] => 2
)
Array
(
    [0] => 0
    [1] => 1
    [2] => 2
)
Похожие функции в PHP
  • array_key_exists($key, $array) — проверяет существование конкретного ключа в массиве. Удобна для точечных проверок без извлечения всех ключей.
  • key($array) — возвращает ключ текущего элемента массива. Используется при итерации с помощью функций current/next.
  • array_search($value, $array, $strict) — ищет значение в массиве и возвращает первый соответствующий ключ. Отличие от array_keys в возврате одного ключа.
  • array_flip($array) — меняет местами ключи и значения массива. Может служить альтернативой для получения ключей по значениям, если значения уникальны.
Типичные ошибки

Передача в функцию аргумента, не являющегося массивом, вызовет предупреждение и вернёт null.

<?php
$result = array_keys('not an array');
var_dump($result);
?>
Warning: array_keys() expects parameter 1 to be array, string given
NULL

Использование несуществующего значения для фильтрации возвращает пустой массив, что иногда интерпретируется как ошибка логики.

<?php
$array = ['a', 'b', 'c'];
$keys = array_keys($array, 'z');
var_dump($keys);
?>
array(0) {
}
Изменения в последних версиях PHP

В PHP 8.0 поведение функции при передаче параметров некорректного типа было изменено. Ранее, при передаче аргумента, не являющегося массивом, выдавалось предупреждение, а функция возвращала null. Сейчас в таких случаях выбрасывается исключение TypeError.

Расширенные примеры
Получение ключей многомерного массива
Пример php
<?php
$multiArray = [
    'user1' => ['id' => 1, 'name' => 'Alex'],
    'user2' => ['id' => 2, 'name' => 'Maria']
];
$firstLevelKeys = array_keys($multiArray);
print_r($firstLevelKeys);
?>
Array
(
    [0] => user1
    [1] => user2
)
Фильтрация по типу с использованием строгого сравнения
Пример php
<?php
$data = ['a' => false, 'b' => 0, 'c' => null, 'd' => ''];
$keysForFalse = array_keys($data, false, true);
print_r($keysForFalse);
?>
Array
(
    [0] => a
)
Комбинация с array_fill_keys для создания нового массива
Пример php
<?php
$source = ['width', 'height', 'depth'];
$newArray = array_fill_keys(array_keys($source), 0);
print_r($newArray);
?>
Array
(
    [width] => 0
    [height] => 0
    [depth] => 0
)
Использование в циклах для итерации по ключам
Пример php
<?php
$colors = ['red' => '#FF0000', 'green' => '#00FF00', 'blue' => '#0000FF'];
foreach (array_keys($colors) as $colorName) {
    echo "Цвет $colorName имеет код {$colors[$colorName]}".PHP_EOL;
}
?>
Цвет red имеет код #FF0000
Цвет green имеет код #00FF00
Цвет blue имеет код #0000FF
Аналоги в других языках

Array keys в Python

У словарей есть метод keys(), возвращающий объект представления ключей.

my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = list(my_dict.keys())
print(keys)
['a', 'b', 'c']

Array keys в Javascript

Для объектов используется Object.keys(), для массивов — тот же метод, возвращающий индексы.

const obj = {a: 1, b: 2, c: 3};
const keys = Object.keys(obj);
console.log(keys);
['a', 'b', 'c']

Array keys в MySQL

Прямого аналога нет, но для получения имён столбцов таблицы используется запрос SHOW COLUMNS.

SHOW COLUMNS FROM table_name;

PHP array_keys function comments

En
Array keys Return all the keys or a subset of the keys of an array