Урок 11: Ассоциативные массивы в PHP

На 11 уроке мы погрузимся в мир ассоциативных массивов PHP, мощного инструмента для структурирования данных. Если вы уже работали с обычными массивами, то ассоциативные массивы покажутся вам более гибкими и удобными.

Что такое ассоциативные массивы?

Ассоциативный массив это коллекция элементов, где каждый элемент имеет уникальный ключ (чаще строка) и значение. Ключи здесь не случайны: они задаются вами и несут смысловую нагрузку. Например:

$user = [
    'name' => 'Иван',
    'age' => 30,
    'email' => 'ivan@example.com'
];

Здесь 'name''age' и 'email' — ключи, а 'Иван'30 и 'ivan@example.com' — их значения.

Создание ассоциативного массива

Способ 1: Используя синтаксис []

$book = [
    'title' => 'PHP для начинающих',
    'author' => 'Максим Габов',
    'price' => 1500
];

Способ 2: Функция array()

$car = array(
    'brand' => 'Toyota',
    'model' => 'Camry',
    'year' => 2022
);

Работа с ключами и значениями

Доступ к элементам

Чтобы получить значение, обратитесь по ключу:

echo $user['name']; // Выведет: Иван

Добавление элементов

Просто присвойте новому ключу значение:

$user['phone'] = '+7 900 123-45-67';

Изменение элементов

Перезапишите значение по ключу:

$user['age'] = 31; // Теперь возраст 31

Удаление элементов

Используйте unset():

unset($user['email']); // Удалит элемент с ключом 'email'

Функции для работы с массивами

1. array_keys() — получить все ключи массива

$keys = array_keys($user);
print_r($keys); 
// Выведет: Array ( [0] => name [1] => age [2] => phone )

2. array_values() — получить все значения

$values = array_values($user);
print_r($values);
// Выведет: Array ( [0] => Иван [1] => 31 [2] => +7 900 123-45-67 )

3. array_merge() — объединение массивов

$userInfo = [
    'country' => 'Россия',
    'city' => 'Москва'
];
$mergedArray = array_merge($user, $userInfo);
print_r($mergedArray);

4. array_key_exists() — проверка существования ключа

if (array_key_exists('email', $user)) {
    echo 'Email существует!';
} else {
    echo 'Email не найден.';
}

5. in_array() — проверка существования значения

if (in_array('Иван', $user)) {
    echo 'Иван есть в массиве!';
}

6. foreach — итерация по массиву

foreach ($user as $key => $value) {
    echo "$key: $value <br>";
}
// Выведет:
// name: Иван
// age: 31
// phone: +7 900 123-45-67

Практические задачи

Задача 1: Создание и вывод данных

Создайте массив $student с ключами: namecoursesubject. Заполните его данными и выведите через foreach.

Решение:

$student = [
    'name' => 'Анна',
    'course' => 2,
    'subject' => 'Программирование'
];

foreach ($student as $key => $value) {
    echo ucfirst($key) . ": $value <br>";
}

Задача 2: Фильтрация массива

Дан массив товаров:

$products = [
    'laptop' => 50000,
    'mouse' => 1500,
    'keyboard' => 3000,
    'monitor' => 12000
];

Выведите товары, цена которых выше 2000 рублей.

Решение:

foreach ($products as $product => $price) {
    if ($price > 2000) {
        echo "$product: $price руб. <br>";
    }
}

Задача 3: Объединение данных

Объедините два массива:

$userData1 = ['name' => 'Максим', 'age' => 28];
$userData2 = ['city' => 'Самара', 'job' => 'Разработчик'];

Выведите результат.

Решение:

$mergedUser = array_merge($userData1, $userData2);
print_r($mergedUser);

Советы

  • Всегда проверяйте существование ключа через array_key_exists(), чтобы избежать ошибок.
  • Используйте осмысленные ключи: 'user_age' лучше, чем 'age1'.
  • Комбинируйте функции: например, array_keys() + foreach для гибкой обработки.

Частые ошибки

  1. Обращение к несуществующему ключу
echo $user['address']; // Ошибка, если ключа 'address' нет.
  1. Путаница между array_key_exists() и isset()
    isset() возвращает false, если значение null, а array_key_exists() — нет.

Теперь вы умеете работать с ассоциативными массивами. Практикуйтесь и скоро эти структуры станут вашими надежными помощниками.

Хотите продолжить обучение? Перейти к полному курсу по PHP для начинающих