smidl
@smidl
WordPress-разработчик

Как получить элемент массива по значению, а потом получить значение его «родителя»?

Это вардамп расписания занятий в школе.
array(1) {
  [0]=>
  array(2) {
    ["day"]=>
    string(8) "16.10.17"
    ["day_items"]=>
    array(3) {
      [0]=>
      array(3) {
        ["time"]=>
        string(13) "09:00 - 10:00"
        ["teacher"]=>
        int(628)
        ["title"]=>
        string(22) "Физкультура"
      }
      [1]=>
      array(3) {
        ["time"]=>
        string(13) "10:00 - 11:00"
        ["teacher"]=>
        int(812)
        ["title"]=>
        string(23) "Русский язык"
      }
      [2]=>
      array(3) {
        ["time"]=>
        string(13) "11:00 - 12:00"
        ["teacher"]=>
        int(635)
        ["title"]=>
        string(10) "Химия"
      }
    }
  }
  }


Имеем на входе массив $days c 7 днями недели (в примере кода оставил только первый день для примера).

Внутри каждого $days есть еще один массив $day_items, в котором перечисляются уроки, которые будут проходить в этот день. Указывается название урока, айди преподавателя и время...

Как по id преподавателя выбрать из массива $days асболютно все уроки, где он указан как teacher, при этом необходимо, чтобы новый массив со всеми занятиями этого препода был рассортирован по дня. Но сами дни указаны выше по дереву, в вышестоящем массиве...

Понимаю, что для выбора элемента массива по ключу можно использовать что-то типа:

$filtered = array_filter($days, function($item) {
    return $item['teacher'] === 325;
}


Но как быть дальше с выбором даты для каждого занятия...
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
0xD34F
@0xD34F
$teacherID = чему-то там равен, неважно...

$itemsByTeacherID = [];
foreach ($days as $day) {
  foreach ($day['day_items'] as $item) {
    if ($item['teacher'] === $teacherID) {
      $itemsByTeacherID[$day['day']][] = $item;
    }
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных
А чего бы по бд сразу правильные запросы не делать?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽