array_map, array_filter, array_reduce или foreach
Вопрос
Когда вы используете array_map, array_filter, array_reduce, а когда обычный foreach?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Функции массивов для декларативных преобразований и коротких цепочек
array_filter сохраняет ключи, array_map сохраняет ключи только для одного массива
foreach понятнее для сложной логики, ранних выходов и побочных эффектов
Производительность сопоставима, foreach без вызова колбэка обычно быстрее
Стрелочные функции fn для коротких колбэков, они захватывают переменные автоматически
Что могут спросить следом
- Что вернёт array_map с двумя массивами?
- Как сохранить ключи при array_map?
Разбор
Для простых преобразований беру функции: array_map чтобы преобразовать каждый элемент, array_filter чтобы отобрать, array_reduce чтобы свести к одному значению, array_column чтобы вытащить поле из списка записей. Со стрелочными функциями fn($u) => $u->email код получается коротким и читаемым.
Нужно помнить детали: array_filter сохраняет ключи, и после него часто нужен array_values; array_map сохраняет строковые ключи, только если передан один массив.
Обычный foreach выбираю, когда логика сложная: несколько условий, ранний выход через break, накопление сразу нескольких результатов. По скорости foreach обычно немного быстрее, потому что нет вызова функции на каждый элемент, но на обычных объёмах это не важно, решает читаемость.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.