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

Уже второй день серфю примеры но не могу прийти к нужному результату.

К примеру есть двухуровневый массив:
$arr = [
'Ученик' => ['Иванов', 'Сидоров', 'Петров'], 
'Учитель' => ['Васильев', 'Дмитриенко']
]

и не могу придти к тому что бы по фамилии можно было определить кто это, ученик или учитель. Помогите пожалуйста!
  • Вопрос задан
  • 107 просмотров
Решения вопроса 3
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Серфить примеры не надо.
Надо запомнить одно очень простое правило: все операции над массивами производятся в цикле.
Это очень просто запомнить. И даже понять.
Массив - это набор данных.
Чтобы что-то в найти в этом наборе - его надо перебрать.
Вот и перебирайте. Как только нашли нужное значение - вот ваш ученик.
Вам знаком оператор foreach?
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
echo implode(
	', ',
	array_filter(
		array_keys($arr),
		fn($key) => in_array($person, $arr[$key]),
	),
);
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
можно так если только два варианта
if (in_array($person, $arr['Ученик'])) {
    echo "$person is Ученик";
} elseif (in_array($person, $arr['Учитель'])) {
    echo "$person is Учитель";
}

или в цикле по всем элементам массива
foreach ($arr as $position => $names) {
    if (in_array($person, $names)) {
        echo "$person is $position";
    }
}


Здесь можно проверить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы