Почему не работает цикл?
$i = count($url_arts);
тут < или <= , но никак не =
По коду получается вы переменной $i присваиваете результат count($url_arts), что дает тот же результат условию. Выходит если кол-во 0, то будет false, если больше нуля - true, и никакое кол-во итераций не изменит эту ситуацию, на что и получаете бесконечный цикл
Бесконечный цикл. У вас нет условия, при котором цикл прекратит работу.