Puoi usare un altro modo per popolare gli array associativi perche' di quello si tratta.
Codice PHP:
$persona[0][id]
$persona[0][nome]
$persona[0][cognome]
// e' equivalente a
$persona = array();
array_push( $persona , array( "id"=>$id , "nome"=>$nome, "cognome"=>$cognome ) ) ;
La funzione array push si occupa da sola ad inserire nelle celle incrementando l'indice il tuo sottoarray di dati .
QUindi ad ogni ciclo puoi inserire tutti i dati che vuoi con un codice molto pulito.
Ovviamente come dicevo sopra le due sol sono equivalenti e ti serve sempre un ciclo for, foreach, while, do while .... per popolare l'array.