Что выведет код Middle Eloquent, N+1 и миграции обновлено
Коллекции Laravel: ключи и цепочки
Вопрос
Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.
<?php
// упрощённая коллекция без Laravel, ведёт себя как Illuminate\Support\Collection в этих методах
$orders = [
['id' => 1, 'user' => 'ira', 'total' => 300],
['id' => 2, 'user' => 'oleg', 'total' => 100],
['id' => 3, 'user' => 'ira', 'total' => 200],
];
$byUser = [];
foreach ($orders as $o) {
$byUser[$o['user']][] = $o['total'];
}
$sums = array_map('array_sum', $byUser);
arsort($sums);
echo json_encode($sums), "\n";
$big = array_filter($orders, fn($o) => $o['total'] >= 200);
echo json_encode(array_column($big, 'id')), "\n";
echo json_encode(array_keys($big)), "\n";
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: {"ira":500,"oleg":100}, [1,3], [0,2]. Группировка по ключу и arraymap сохраняют строковые ключи: суммы ira 500 и oleg 100, arsort сортирует по убыванию с сохранением ключей. arrayfilter оставляет элементы с ключами 0 и 2, а arraycolumn собирает значения id в новый список [1,3].
Что выведет
{"ira":500,"oleg":100}
[1,3]
[0,2]
Разбор
Группировка по ключу и array_map сохраняют строковые ключи: суммы ira 500 и oleg 100, arsort сортирует по убыванию с сохранением ключей. array_filter оставляет элементы с ключами 0 и 2, а array_column собирает значения id в новый список [1,3]. Ключи отфильтрованного массива [0,2]: так же ведут себя filter и values в коллекциях Laravel.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.