Чтобы оценивать тестовое задание нужно знать тестовое задание.
"Не принять" могли не задание, а ваше резюме, например.
Тестовое задание призвано показать ваш уровень, а вы там сразу пишете "писал я его на скорую руку левой пяткой".
Если ваша цель — за разумное время получить качественный результат, то стоит обратиться к тому, кто этим профессионально занимается. За дополнительную оплату этот человек может согласиться вдобавок всё вам объяснить.
Если цель — набивать шишки и учиться таким образом, то продолжайте изучать самостоятельно, только сразу готовьтесь к тому, что будете делать ошибки, а их последствия отразятся на клиентах.
Вам уже пять раз сказали - сделайте вывод строки в консоль и сами убедитесь, что я прав.
Иного тут просто быть не может - index out of bounds означает, что элемента 1 в массиве нет. Нет его там потому, что в какой-то строке нет дефиса. Это может быть пустая строка в конце файла, например.
Станислав, задача ваша понятна и я даже не уговариваю вас с легаси слезать - понятно, что проекты разные бывают. Мой основной посыл был в том, что она слишком специфична для того, чтобы под неё было готовое решение.
На самом деле, может, добавить поддержку и не сложно вовсе. Первое, что я бы сделал — это форк с тупо изменённой версией зависимости в composer.json. Есть небольшая вероятность, что заведётся и так. Ну а дальше смотреть по обстоятельствам.
Если вам принципиально не писать самому, посмотрите существующие форки — возможно, кто-то уже решал такую специфическую задачу.
Ну если вы странного желаете, что мы можем поделать? «Где мне взять Девятку с мотором от Ламборджини», вот это вот всё. ¯\_(ツ)_/¯
Те, кто хотят пользоваться современными версиями программ, обновляют их. Программы тесно взаимосвязаны, поэтому невозможно обновить одну, не обновляя другие.
Под пятую версию Фреймворка пакеты давно никто не пишет, соответственно, и потребности использовать последнюю версию PhpUnit не возникает. Если у вас всё-таки возникла — придётся поработать руками.
Помимо уникальности нужно ещё чтобы ключ был жёстко связан с конкретным элементом. В случае с индексом массива это не так, при динамической сортировке связь поменяется. Другое дело, что сортировки обычно нет и работает и так.