Я хочу добавить к ответу Майкла Берковски, что это также может произойти, если порядок массива будет отменен, и в этом случае немного сложнее наблюдать эту проблему, потому что в объекте json порядок будет упорядочен по возрастанию.
Например:
[
3 => 'a',
2 => 'b',
1 => 'c',
0 => 'd'
]
Вернет:
{
0: 'd',
1: 'c',
2: 'b',
3: 'a'
}
Таким образом, решение в этом случае должно использовать array_reverse
перед его кодировкой json