Kod mu istiyorsunuz algoritma mı belirtmemişsiniz, php bilmiyorum ancak algoritmik olarak yardım edebilirm. Java'da aynı durum ile karşılaşsaydım, bütün bir JSONArray yada JSONObject için while döngüsü içerisinde key değer null olmadığı sürece bu while döngüsünün içerisindeki bir başka while döngüsü içerisinde dışardaki key'i içeridekine eşitlerim ve içeride bu eşitleme yine key değeri null olana kadar devam eder.
İçeride aynı zamanda eşitlemeyi yapmadan önce önceki key değerini diziye kayıt edersiniz ve içerideki while döngüsünün çıkışında bu diziyi istediğiniz yere kayıt edip sıfırlarsınız. Umarım yardımcı olmuştur. İyi çalışmalar.