ma tu, a prescindere, sai il numero massimo di array e il numero massimo di indici che tali array possono contenere oppure è variabile?

cmq basta che semplicemente ti fai un array di appoggio, poi ti fai

per ogni array as $indice => valore

se indice esiste in array_appoggio alora array_appoggio[indice][] = valore
altrimenti
array_appoggio[indice] = array(valore)

ovviamente devi ciclare su tutti gli array che ti interessano