Начал было писать комментарии в вашем коде, но тут все очень плохо.
1. Не юзайте подход с проверкой константы и die/exit - это рудимент из времен, когда было модным пихать исполняемый код в публичный каталог вебсервера.
2. Не скупитесь на названия переменных, tmpArResult и anParents - это названия которые не говорят ни о том, что у вас там ни о том, зачем оно.
3. Вынесите логику получения ваших данных в отдельный класс, без кэша.
4. Для сложных данных вполне норм использовать DTO / Entity, ассоциативные массивы не обладают задекларированной структурой.
5. Не используйте глобальные перменные, вообще лучше забудьте про их существование.
Поправьте для начала это, потом приходите посмотрим еще.