Как пофиксить ошибку PHP «Warning: Illegal string offset 'id'»?
stackoverflow.com/questions/9869150/illegal-string...
У вас в $this->rankarray[$key] строка. Чтобы пофиксить это предупреждение:
1) положите туда массив
2) не обращайтесь к строке по индексу ['id']
} else {
                        return 1;
break не хватает - бесконечный цикл...