Задать вопрос
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;
}


Но как быть дальше с выбором даты для каждого занятия...
  • Вопрос задан
  • 288 просмотров
Подписаться 3 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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-приложений, хороших и разных
А чего бы по бд сразу правильные запросы не делать?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽