Как найти ключ 1-го уровня в массиве 2-го уровня, используя значение элемента?

Как определить, является ли человек учеником или учителем, на основе его фамилии в двухуровневом массиве $arr?
  • 1 октября 2023 г. 6:07
Ответы на вопрос 3
Для поиска ключа 1-го уровня в массиве 2-го уровня по значению элемента можно использовать функцию array_search. Пример:

```php
$searchValue = "значение элемента"; // значение элемента, для которого нужно найти ключ 1-го уровня
$key = null; // переменная для сохранения найденного ключа

foreach ($arr as $key1 => $level1Array) {
    $key2 = array_search($searchValue, $level1Array);
    if ($key2 !== false) {
        $key = $key1;
        break;
    }
}

if ($key !== null) {
    echo "Ключ 1-го уровня для значения $searchValue: $key";
} else {
    echo "Значение $searchValue не найдено";
}
```

Для определения, является ли человек учеником или учителем, на основе его фамилии в двухуровневом массиве $arr, можно использовать аналогичный подход:

```php
$surname = "фамилия"; // фамилия, для которой нужно определить роль
$role = null; // переменная для сохранения найденной роли (ученик/учитель)

foreach ($arr as $key1 => $level1Array) {
    if (in_array($surname, $level1Array)) {
        $role = $key1;
        break;
    }
}

if ($role !== null) {
    echo "Человек с фамилией $surname является $role";
} else {
    echo "Фамилия $surname не найдена";
}
```

В обоих примерах предполагается, что массив $arr имеет следующую структуру:

```php
$arr = [
    "учитель" => ["фамилия1", "фамилия2"],
    "ученик" => ["фамилия3", "фамилия4"]
];
```

Где "учитель" и "ученик" - ключи 1-го уровня, а "фамилия1", "фамилия2", "фамилия3", "фамилия4" - значения элементов 2-го уровня.
if (in_array($person, $arr['Ученик'])) {
    echo "$person is Ученик";
} else {
    if (in_array($person, $arr['Учитель'])) {
        echo "$person is Учитель";
    } else {
        foreach ($arr as $position => $names) {
            if (in_array($person, $names)) {
                echo "$person is $position";
            }
        }
    }
} 
 Здесь можно проверить.Серфить примеры не надо.Надо запомнить одно очень простое правило: все операции над массивами производятся в цикле. Это очень просто запомнить. И даже понять. Массив - это набор данных. Чтобы что-то найти в этом наборе, его надо перебрать. Вот и перебирайте. Как только нашли нужное значение - вот ваш ученик. Вам знаком оператор foreach?
Похожие вопросы