Функция array_keys() и array_values()

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Каждый массив в PHP состоит из двух частей: ключей и значений. Часто возникает задача получить их по отдельности. Для этого существуют две парные и очень полезные функции: `array_keys()` и `array_values()`.

Первая, как следует из названия, извлекает из массива все его ключи и возвращает их в виде нового, простого нумерованного массива. Вторая делает то же самое, но со значениями. Это незаменимые инструменты, когда нужно, например, получить список всех пользователей (значения) или их идентификаторов (ключи) для дальнейшей обработки.

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

Список тем

Получение всех ключей массива

id: 38970_task_keys_values_1

Начнем с основ. У нас есть ассоциативный массив, описывающий пользователя. Ваша задача — получить из него новый массив, содержащий только ключи ('name', 'age', 'city'). Заполните пропуск, используя нужную функцию.

Заполните пропуски
<?php
$user_data = [
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
];

$keys = input1S($user_data);

print_r($keys);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Получение всех значений массива

id: 38970_task_keys_values_2

Теперь сделаем обратную операцию. Используя тот же массив с данными пользователя, получите новый массив, который будет содержать только значения ('John', 30, 'New York'). Заполните пропуск, чтобы код заработал.

Заполните пропуски
<?php
$user_data = [
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
];

$values = input1S($user_data);

print_r($values);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Функция и её назначение

id: 38970_task_keys_values_3

Давайте закрепим разницу между двумя функциями. Сопоставьте название каждой функции в правом столбце с её правильным описанием в левом столбце.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Возвращает новый массив, состоящий из всех ключей исходного массива.
Возвращает новый массив, состоящий из всех значений исходного массива.
Ищет в массиве значение и возвращает ключ первого найденного элемента.
array_values()
array_search()
array_keys()
Сообщения
Проверить
Показать подсказку

Что вернет array_values?

id: 38970_task_keys_values_4

Важно помнить, что `array_values` создает новый, нумерованный массив. Посмотрите на код с ассоциативным массивом и предскажите, что именно выведет `print_r()`. Скопируйте или напишите точный результат в поле ответа.

Что должно получиться?
<?php
$fruits = [
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'cherry'
];

$values_only = array_values($fruits);

print_r($values_only);
?>
Сообщения
Проверить
Показать подсказку

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

id: 38970_task_keys_values_5

Функция `array_keys()` умеет не только возвращать все ключи, но и находить ключи, соответствующие определенному значению. Проанализируйте код и выберите, что он выведет на экран.

Выберите правильный вариант ответа
<?php
$user_roles = [
    'user1' => 'editor',
    'user2' => 'admin',
    'user3' => 'editor'
];

// Находим всех пользователей с ролью 'editor'
$editor_keys = array_keys($user_roles, 'editor');

print_r($editor_keys);
?>
Сообщения
Проверить
Показать подсказку

Поиск ключей со строгой проверкой

id: 38970_task_keys_values_6

Дополним предыдущее задание. Иногда нужно искать значение, учитывая его тип. Для этого у `array_keys()` есть третий параметр. Заполните пропуски из банка, чтобы найти ключ, соответствующий числу `1`, а не строке '1'.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$data = ['a' => 1, 'b' => '1', 'c' => 2];

// Ищем ключи, где значение строго равно числу 1
$keys = array_keys($data, input1S, input2S);

print_r($keys);
?>
1
true
false
'1'
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте логическую ошибку

id: 38970_task_keys_values_7

Программист хотел получить список имен пользователей (значений), но по ошибке использовал не ту функцию. В результате в переменной `$names` оказался список ключей. Исправьте строку с ошибкой, чтобы скрипт вывел имена.

Найдите ошибку и исправьте
<?php
$users = ['id_1' => 'Alice', 'id_2' => 'Bob'];
 
// Ошибка: получаем ключи вместо значений
$names = array_keys($users);
 
print_r($names);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сборка: Разделение массива на ключи и значения

id: 38970_task_keys_values_8

Соберите из фрагментов скрипт, который принимает массив с настройками, извлекает отдельно все названия настроек (ключи) и их значения, а затем выводит оба получившихся массива. Будьте внимательны, есть лишние строки.

Перетяните в правильном порядке строки из одного блока в другой
print_r($keys);
<?php
$values = array_values($settings);
print_r($values);
$settings = ['theme' => 'dark', 'font_size' => 14];
?>
$keys = array_keys($settings);
$keys = array_search('dark', $settings);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру