Я думаю, что проблема в
, когда вы не используете рекурсию, вы получаете правильную структуру массива результатов (категорий).
В противном случае вы получите неправильную структуру.
Я думаю, что вы можете var_dump массива, чтобы увидеть структуру в обоих случаях, а затем сравнить их.
Если вы разработчик тогда вы можете использовать отладку, чтобы увидеть структуру массива.