В PHP почти всё делает один тип: array представляет собой упорядоченную хеш-таблицу, которая служит одновременно списком, словарём и стеком. На этом пути вы пишете на PHP структуры, которые он заменяет, и те, которые заменить не может, затем с их помощью сортируете, применяете рекурсию и обходите графы, а завершаете задачами с собеседований, проверяемыми тестами. Бесплатно, в браузере, с сертификатом за большинство курсов.
Каждый шаг состоит из уже существующих курсов Coddy, и каждая кнопка «Начать» открывает их на PHP. Три курса, которых пока нет на PHP, перечислены после шагов.
1
Шаг 1
Серия по структурам данных, часть первая
Начать этот шагНачатьСтек, очередь, двоичное дерево, хеш-таблица и связный список: каждую структуру вы пишете на PHP с нуля, а затем применяете для решения задач. После этого шага вы знаете, когда array хорош в роли стека, почему array_shift делает из него плохую очередь и что делает за вас хеш-таблица внутри каждого массива.Начать
Начать этот шагНачатьДвусвязный список, кучи и очереди с приоритетом, префиксные деревья, графы и самобалансирующееся АВЛ-дерево. После этого шага SplDoublyLinkedList становится структурой, которую вы уже писали, в SplMinHeap и SplMaxHeap вы видите одну идею, обращённую в две стороны, а сбалансированное дерево, которого нет в PHP, вы можете построить сами.Начать
Начать этот шагНачатьПузырьковая, выбором, вставками, слиянием, быстрая, пирамидальная, подсчётом и поразрядная сортировки: вы пишете их на PHP и наблюдаете в визуализаторе. sort() сортирует устойчиво начиная с PHP 8.0; после этого шага вы знаете, что означает это обещание и какие из восьми сортировок могли бы его сдержать.Начать
Начать этот шагНачатьЗадачи на рекурсию на PHP. Именованная функция свободно вызывает саму себя, а анонимная сначала должна захватить себя по ссылке, как в $f = function ($n) use (&$f) { ... }; эту деталь стоит знать до того, как на собеседовании попросят написать рекурсивное замыкание. Динамическое программирование и битовые операции перечислены после шагов, так как они преподаются на Python и C++.НачатьСвоя страница15 уроков15 задачи
5
Шаг 5
Алгоритмы на графах
Начать этот шагНачатьПоиск в ширину и в глубину, Дейкстра, Беллман-Форд, топологическая сортировка, Крускал и Прим на PHP, поверх графа, который вы построили на втором шаге. SplPriorityQueue реализует max-кучу, поэтому алгоритм Дейкстры либо берёт расстояния с обратным знаком, либо работает на вашей собственной куче со второго шага.Начать
Начать этот шагНачатьДесять наборов задач с собеседований и два банка задач по программированию на PHP с проверкой по тестам: незнакомые задачи, решение без туториалов и без array на все случаи жизни.Начать
Всё, что вам нужно, чтобы научиться программировать
Учитесь на практике
Пишите реальный код, работайте с базами данных, создавайте сайты и осваивайте ИИ-промпты. Наши интерактивные уроки охватывают все навыки, необходимые современным разработчикам.
playground.js
Редактор кода
1const greeting ="Hello, Coddy!"
2function sayHi(name) {
3return greeting +" "+ name
4}
5
Тест №1
Тест №2
Тест №3
Ввод
"Alex"
Вывод
"Hello, Coddy! Alex"
Создайте свою серию
Будьте последовательны и наблюдайте за своим прогрессом! Отслеживайте ежедневную привычку программирования, защищайте свою серию с помощью дней заморозки и получайте награды за каждый день.
12 дней подряд
Возвращайтесь завтра, чтобы сохранить серию!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
Всё или ничего
День 5 из 7
Заморозка серии
2 left
Код где угодно
Возьмите свое путешествие по программированию с собой! Без настройки, без загрузок: просто откройте и начните программировать. Доступно на iOS, Android и Web с рейтингом 4.9 звезд.
Соревнуйтесь в глобальных рейтингах, приглашайте друзей, чтобы получать награды, и празднуйте успехи друг друга. Программировать веселее с друзьями!
Лига ПретендентовТоп 7 продвигаются
1
Alex7+ Days
2840
2
Jordan7+ Days
2650
3
Sam7+ Days
2420
4
Casey
2180
5
Morgan7+ Days
1950
Зона продвижения
Учитесь как угодно
Читайте, слушайте, проверяйте себя, спрашивайте у ИИ или ищите то, что уже изучили. Каждый урок подстраивается под вас.
Введение в переменные
Аудио
Переменная - это именованный контейнер, который хранит значение для последующего использования.
В Python вы создаёте её, написав имя, знак равенства и значение, которое нужно сохранить.
Значение может меняться. Переприсваивание просто направляет имя на новое значение.
1xSarah
Ваш сертификат
Получайте сертификаты за каждый завершенный курс. Добавьте их в свой профиль LinkedIn и резюме, чтобы продемонстрировать работодателям свои навыки программирования.
Чем на самом деле является array. array в PHP представляет собой упорядоченную хеш-таблицу, поэтому работают и $a[] = $x, и $a['key'] = $x, и поэтому array_shift медленный: он перенумеровывает все оставшиеся элементы. Написав настоящие стек, очередь и хеш-таблицу, вы узнаёте, какие операции с массивом дешёвые, а какие незаметно обходятся дорого.
Алгоритмы для веб-разработчиков. На PHP работают WordPress и Laravel, а медленная страница иногда оказывается замаскированной алгоритмической задачей: in_array внутри цикла означает линейный поиск на каждом проходе, тогда как isset по массиву с ключами в среднем работает за константное время. То же мышление, которое помогает пройти собеседование, исправляет и такую страницу.
Почти весь путь на PHP. Все структуры данных, сортировки, алгоритмы на графах, задачи на рекурсию и наборы задач с собеседований преподаются на PHP. Три курса преподаются на других языках и перечислены после шагов, у каждого своя ссылка: динамическое программирование и серия по интервью на Python (Python), а также битовые операции (C++). Битовые операции легко читать с позиции PHP, где есть &, |, ^, ~, << и >> из C++.
Проверка как на собеседовании. Каждый урок заканчивается задачей на PHP с автопроверкой по тестам, а когда решение не проходит, Bugsy читает ваш код и подталкивает к исправлению, не выдавая ответ. Бесплатный сертификат за большинство курсов, каждый с проверкой по собственной ссылке.
Частые вопросы о DSA на PHP
Подходит ли PHP для структур данных и алгоритмов?
Для их изучения да, если отказаться от одной привычки: хвататься за array по любому поводу. Массив PHP достаточно гибок, чтобы быть списком, словарём и стеком, и именно это скрывает стоимость каждой операции. Напишите структуры сами, и PHP окажется вполне подходящим языком для рассуждений об алгоритмах, а если вы работаете на PHP, то и естественным языком для собеседования.
Какие классы SPL каким структурам данных соответствуют?
SplStack и SplQueue представляют собой стек и очередь, оба построены на SplDoublyLinkedList; SplMinHeap и SplMaxHeap реализуют кучи; SplPriorityQueue представляет собой max-кучу, упорядоченную по приоритету; а SplFixedArray является массивом фиксированного размера с целочисленными индексами, который расходует меньше памяти, чем array. Обычный array служит вам хеш-таблицей. Классов для дерева, префиксного дерева или графа нет, так что их вы пишете сами, на первом и втором шагах.
Почему array_shift работает медленно для очереди в PHP?
Потому что после удаления первого элемента он перенумеровывает все оставшиеся целочисленные ключи с нуля, а это затрагивает весь массив: очередь на array_shift стоит O(n) за каждое извлечение и квадратичное время, чтобы её опустошить. Используйте SplQueue или храните индекс начала массива и сдвигайте его вперёд. На первом шаге вы сами пишете очередь, и это самый верный способ увидеть разницу.
Устойчива ли сортировка sort() в PHP?
Начиная с PHP 8.0 да: sort(), usort(), asort() и другие функции сортировки сохраняют исходный порядок равных элементов. До версии 8.0 такого обещания не было, поэтому код, зависевший от порядка равных элементов, мог вести себя по-разному в разных версиях. Из восьми сортировок третьего шага сортировка слиянием и сортировка вставками устойчивы, а быстрая и пирамидальная нет; после этого шага вы знаете почему.
Какие курсы этого пути не преподаются на PHP?
Три: динамическое программирование и серия по интервью на Python преподаются на Python, а битовые операции на C++. Они перечислены после шагов, каждый со ссылкой, которая открывает курс на его собственном языке. Таблица мемоизации в PHP представляет собой array с подзадачами в качестве ключей. Одна ловушка при переносе битовых трюков: если оба операнда &, | или ^ являются строками, PHP работает с байтовыми значениями их символов и возвращает строку, поэтому сначала убедитесь, что значения целочисленные.
Нужно ли знать PHP, прежде чем начинать этот путь?
Как минимум функции, массивы, циклы и классы, поскольку узел естественно представить объектом со свойством $next. Если это для вас новое, курс PHP от Coddy сначала бесплатно доведёт вас до этого уровня, а этот путь начинается там, где он заканчивается.
Будет ли сертификат за путь Структуры и алгоритмы?
Да. Пройдите все шаги и получите один бесплатный сертификат за весь путь Структуры и алгоритмы. В нём перечислены все курсы, пройденные по пути, а также ссылки на сертификат каждого курса, чтобы любой мог проверить каждый указанный навык. Его можно добавить в профиль LinkedIn. Это сертификат о завершении от Coddy, а не аккредитованная квалификация.
Другие пути обучения
Те же курсы, выстроенные под другую роль. Прогресс сохраняется: курс, пройденный на одном пути, засчитывается на каждом пути, куда он входит.