PRO курс

PHP: Функции

582 сообщения в сообществе 624 учащихся

Функции в PHP способны на большее! В этом курсе вы познакомитесь с такими понятиями, как объекты первого рода, лямбда-функции и функции высшего порядка. Научитесь передавать и принимать неограниченное число аргументов, изучите операции «отображение», «фильтрация» и «агрегация». Познакомитесь со сторонними библиотеками, значительно упрощающими работу программиста.

Подготовительный курс

PHP: Ассоциативные массивы

Уроки курса

Испытания

Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки.

Автор

Кирилл Мокевнин

Сооснователь и технический директор образовательного проекта Hexlet. Программирует с 2007 года. За это время прошел путь от разработчика до технического директора и управляющего отдельным подразделением (филиалом). Управлял командами, в которых больше 50 разработчиков. Программирует на языках: elixir, clojure, javascript, php, ruby. Со-организатор конференции nastachku.ru. Вимер. Топит за DevOps и автоматизированные тесты.

Впечатления

Просидел.. ., попыхтел.. .,просматривал и разбирал примеры из теории, иногда запускал некоторые из примеров в repl.it, где-то для меня было так удобнее и в чём-то помогало. Как в некоторых случаях помогал просмотр файла с тестами, там бывает можно натолкнуться на мысль о решении, каким оно должно выглядеть, ну это к примеру.

Пробовал и еще раз пробовал, вникал и наконец-то решил. Конечно, не так элегантно и лаконично как решение учителя. Решение учителя включает в себя всё трио, пройденных трёх функций, красиво применена и array_filter, и array_map в итоге возврат нужного результата из array_reduce, просто красота! Эх.. . Я же в своём решении всё "скармил" одной мощной array_reduce, понятно, что внутри получилось много проверок - if-ов, возможно и "лишних" присвоений, не очень красивых retur-ов :) . Вобщем такой олдскульный хардкор:)

Когда начинаешь понемногу вникать и доходить до принципов устройства и работы этих чУдесных:) функций: array_map, array_filter, array_reduce , то раскладывается всё по-полочкам. По-началу пытаешься как бы "уловить", где там цикл "зашит", потому что привык уже и чувствуешь что вот он работает, а его явно не видно:) и как-будто чего-то не хватает:).

В array_reduce не совсем привычны действия с аккумулятором, вроде бы прочитаешь теорию и просмотришь примеры и кажется, да и понятно, в общем и в целом, но потом на практике есть свои моменты, нюансы и нужно разбираться, как говорится: "Мелочи - это не пустяки! И мелочи в мелочах - вовсе не мелочи!". Это особенно применимо к программированию!

[?] Такой вот вопрос с аккумулирующим в себе итоговое значение, как взаимосвязаны в решении учителя массив $acc, который подаётся первым аргументом в нашу анонимную функцию и 3-тий параметр - пустой массив [] в array_reduce ? Пустой массив $acc , наполняется в цикле внутри анонимной функции с учётом всех тех условий, прописанных в теле функции. То есть каждую итерацию идёт заполнение изначально пустого - $acc , по окончанию цикла, далее наполненный $acc возвращается уже из нашей анонимной функции - return $acc , то есть вот он у нас собственно есть return результирующего нужного нам массива, а какую роль играет тут 3-тий аргумент array_reduce? Это просто показать, что возвращаться будет массив - [] ? Ведь по сути агрегируется $acc , а как $acc связан с 3-им аргументом - []. Вобщем не совсем понятна что-ли роль этого 3-его аргумента агрегатора в array_reduce и вообще это похоже как итоговый(2-ой возврат) из функции - вернули наш результирующий массив $acc, к тому еще из array_reduce вернули 3-тий аргумент - [] ? Представляется что-то такое.)

// removed

Решил через регулярные выражения, хотя до конца и не понял как это получилось. Посмотрел решение учителя. Это круто! Разделить через explode и вернуть вторую часть. Очень интересно.

продолжительность
35 часов
награда
97 баллов
Получить доступ к курсу