В каких конструкциях PHP используется оператор =>
и какую роль он выполняет?
=>
в PHP — оператор связи «ключ-значение». Основное использование: объявление ассоциативных массивов (['key' => 'value']
). Также применяется в match-выражениях (case => result
), стрелочных функциях (fn() => ...
) и генераторах (yield key => value
).
Полный ответ:
1. Основное назначение: Связь ключ-значение в массивах
Это самое частое и основное использование =>
. Оператор связывает ключ со значением при объявлении массива.
Синтаксис:
$array = [ключ => значение, ключ2 => значение2];
Примеры:
// Ассоциативный массив
$user = ['name' => 'John', 'age' => 30, 'city' => 'London'];
// Числовые ключи (редко, но возможно)
$array = [1 => 'январь', 2 => 'февраль'];
// Смешанные ключи
$data = [0 => 'zero', 'name' => 'John', 2 => 'two'];
2. Объявление константных массивов
Начиная с PHP 5.6, =>
используется для объявления массивов в константах:
const STATUSES = [
'DRAFT' => 1,
'PUBLISHED' => 2,
'ARCHIVED' => 3
];
define('SETTINGS', [
'cache' => true,
'debug' => false
]);
3. Match-выражения (PHP 8.0+)
В современном операторе match
=>
связывает условие с возвращаемым значением:
$statusCode = 404;
$message = match ($statusCode) {
200, 201 => 'Успешно', // Несколько условий
404 => 'Не найдено',
500 => 'Ошибка сервера',
default => 'Неизвестный статус'
};
4. Функции array_map(), array_filter() с сохранением ключей (PHP 7.4+)
При использовании array_filter()
с флагом ARRAY_FILTER_USE_BOTH
и в array_map()
=>
может использоваться в замыканиях:
$array = ['a' => 1, 'b' => 2, 'c' => 3];
// array_filter с сохранением и ключа, и значения
$result = array_filter($array, fn($value, $key) => $value > 1 && $key !== 'c', ARRAY_FILTER_USE_BOTH);
// В стрелочных функциях => разделяет аргументы и тело функции
$doubled = array_map(fn($value) => $value * 2, $array);
5. Стрелочные функции (PHP 7.4+)
В стрелочных функциях =>
разделяет список параметров и тело функции:
// Обычная анонимная функция
$add = function($a, $b) {
return $a + $b;
};
// Стрелочная функция
$add = fn($a, $b) => $a + $b;
6. Генераторы (yield)
В генераторах =>
используется для yield’а пар ключ-значение:
function getKeyValuePairs() {
yield 'name' => 'John';
yield 'age' => 30;
yield 'city' => 'London';
}
foreach (getKeyValuePairs() as $key => $value) {
echo "$key: $value\n";
}
7. Итерация в foreach
Хотя в самом foreach
используется as
, =>
появляется при извлечении ключей и значений:
$array = ['a' => 1, 'b' => 2];
foreach ($array as $key => $value) {
echo "$key: $value\n"; // a: 1, b: 2
}
Особенности и лучшие практики
- Типы ключей: Ключами могут быть целые числа или строки. Другие типы будут приводиться:
$array = [1 => 'one', '1' => 'another one']; // '1' перезапишет 1
- Автоинкремент ключей: Если ключ не указан, PHP использует автоинкремент:
$array = [5 => 'a', 'b', 10 => 'c', 'd']; // Результат: [5 => 'a', 6 => 'b', 10 => 'c', 11 => 'd']
- Объекты как ключи: Нельзя использовать объекты как ключи массива (вызовет ошибку).
Итог:
Комбинация =>
в PHP — это оператор связи “ключ-значение”. Основные контексты использования:
- Объявление ассоциативных массивов
- Match-выражения (PHP 8.0+)
- Стрелочные функции (PHP 7.4+)
- Генераторы (yield с ключами)
- Константные массивы
Понимание =>
критически важно для работы с современными структурами данных PHP, особенно с ассоциативными массивами и новыми возможностями языка.