Key: примеры (PHP)
key(array|object $array): int|string|nullФункция key в PHP
Функция key() возвращает ключ текущего элемента массива. Внутренний указатель массива при этом не перемещается. Часто используется в сочетании с функциями current(), next(), prev() и reset() для итерации по массиву.
key(array|object $array): int|string|null
Единственный параметр $array - массив или объект, из которого требуется получить ключ текущего элемента.
Функция возвращает ключ текущего элемента массива. Если внутренний указатель находится за пределами массива или массив пуст, возвращается null.
Примеры использования
$array = ['first' => 1, 'second' => 2, 'third' => 3];
echo key($array);first
$array = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
echo key($array) . "\n";
next($array);
echo key($array) . "\n";
end($array);
echo key($array);a b c
$array = [];
var_dump(key($array));NULL
Похожие функции в PHP
Возвращает текущий элемент массива без перемещения указателя.
Возвращает пару ключ/значение и перемещает указатель. В PHP 7.2+ рекомендуется использовать foreach.
Сбрасывает указатель массива на первый элемент и возвращает его значение.
Перемещает указатель массива вперед или назад и возвращает следующий/предыдущий элемент.
key() используют когда нужен только ключ текущего элемента. Для полной итерации предпочтительнее конструкция foreach. Функции семейства reset/next/prev применяют при ручном управлении указателем.
Типичные ошибки
var_dump(key($undefined));Warning: key() expects parameter 1 to be array, null given
$var = 'string';
echo key($var);Warning: key() expects parameter 1 to be array, string given
$array = ['a' => 1, 'b' => 2];
while (key($array) !== null) {
unset($array['a']);
next($array);
}Возможны непредсказуемые результаты, зависящие от версии PHP
Изменения в PHP 8
В PHP 8 функция вызывает TypeError при передаче аргумента неправильного типа. Ранее выдавались предупреждения.
key('string');TypeError: key(): Argument #1 ($array) must be of type array, string given
В PHP 8.1 функция принимает объекты, реализующие интерфейс Traversable. Работа с такими объектами аналогична массивам.
Расширенные примеры
$array = ['k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3'];
$saved_key = key($array);
next($array);
reset($array);
while (key($array) !== $saved_key) {
next($array);
}
echo 'Восстановленный ключ: ' . key($array);Восстановленный ключ: k1
$multi = ['level1' => ['a' => 1, 'b' => 2], 'level2' => ['c' => 3]];
reset($multi);
while ($level1_key = key($multi)) {
echo "Уровень 1: $level1_key\n";
$subarray = current($multi);
reset($subarray);
while ($level2_key = key($subarray)) {
echo " Уровень 2: $level2_key\n";
next($subarray);
}
next($multi);
}Уровень 1: level1 Уровень 2: a Уровень 2: b Уровень 1: level2 Уровень 2: c
$data = [10 => 'десять', 20 => 'двадцать'];
end($data);
echo 'Ключ последнего элемента: ' . key($data);Ключ последнего элемента: 20
$arr = ['color' => 'красный', 'fruit' => 'яблоко'];
reset($arr);
list($key, $val) = each($arr);
echo "$key => $val";color => красный
Аналоги в других языках
Key в Python
# Использование enumerate()
arr = {'a': 1, 'b': 2}
for key in arr:
print(key)
# Получение ключей через dict.keys()
keys = list(arr.keys())
print(keys[0])a b a
Key в Javascript
// Object.keys()
const obj = {x: 10, y: 20};
const keys = Object.keys(obj);
console.log(keys[0]);
// for...in для итерации
for (let key in obj) {
console.log(key);
break;
}x x
Key в MySQL
В SQL нет прямой аналогии, но при выборке с ORDER BY первая запись может считаться "текущей".
SELECT * FROM table ORDER BY id LIMIT 1;