Функция PHP array_keys() принимает массив и возвращает все ключи или подмножество ключей массива.
array_keys ( array $array , mixed $search_value , bool $strict = false ) : array
Где:
В следующем примере показано, как получить все ключи индексированного массива:
<?php
$numbers = [10, 20, 30];
$keys = array_keys($numbers);
print_r($keys);
Вывод:
Array
(
[0] => 0
[1] => 1
[2] => 2
)
Как это работает:
Поскольку $numbers является индексированным массивом, функция array_keys() возвращает числовые ключи массива.
В следующем примере функция array_keys() используется для получения ключей массива, значения элементов которых равного 20:
<?php
$numbers = [10, 20, 30];
$keys = array_keys($numbers, 20);
print_r($keys);
Вывод:
Array
(
[0] => 1
)
Функция array_keys() возвращает ключ 1, поскольку ключ 1 содержит значение 20.
В следующем примере показано, как использовать функцию array_keys() с ассоциативным массивом:
<?php
$user = [
'username' => 'admin',
'email' => 'admin@phptutorial.net',
'is_active' => '1'
];
$properties = array_keys($user);
print_r($properties);
Вывод:
Array
(
[0] => username
[1] => email
[2] => is_active
)
В следующем примере функция array_keys() используется для получения ключей, значения которых равны 1:
$user = [
'username' => 'admin',
'email' => 'admin@phptutorial.net',
'is_active' => '1'
];
$properties = array_keys($user, 1);
print_r($properties);
Вывод:
Array
(
[0] => is_active
)
Функция array_keys() возвращает один ключ - is_active. Однако is_active содержит строку «1», а не число 1. Это связано с тем, что array_keys() по умолчанию использует оператор равенства (==) для сравнения при поиске.
Чтобы включить строгое сравнение равенства (===) при поиске, необходимо передать true в качестве третьего аргумента функции array_keys() следующим образом:
<?php
$user = [
'username' => 'admin',
'email' => 'admin@phptutorial.net',
'is_active' => '1'
];
$properties = array_keys($user, 1, true);
print_r($properties);
Вывод:
Array
(
)
Функция array_keys () вернула пустой массив.
<?php
function array_keys_by(array $array, callable $callback): array
{
$keys = [];
foreach ($array as $key => $value) {
if ($callback($key)) {
$keys[] = $key;
}
}
return $keys;
}
В следующем примере функция array_keys_by() выше используется для поиска ключей, содержащих строку '_post':
<?php
$permissions = [
'edit_post' => 1,
'delete_post' => 2,
'publish_post' => 3,
'approve' => 4,
];
$keys = array_keys_by($permissions, function ($permission) {
return strpos($permission, 'post');
});
print_r($keys);