Quand on est dans une boucle, et qu'on veut remplir un array, à chaque itération on doit y rajouter une ligne et garder la trace de l'index courant du tableau, cela peut se faire de plusieurs façons, en voilà au moins deux:

$array = array();
 
while(foo()) {
 
	$array[] = array();
	$row = & $array[count($array) - 1];
 
}
$array = array();
 
while(foo()) {
 
	$row = & $array[];
 
}

qu'on peut fonctionniser comme suit (dans le but par exemple de gagner en lisibilité et en flexibilité):

function & array_newrow(&$array, $default = array()) {
 
	$array[] = $default
	return $array[count($array) - 1];
 
}
 
function & array_newrow(&$array) {
 
	$row = & $array[];
	return $row;
 
}

EDIT

Il parait que c'est pas très clair, alors on va expliquer mieux. En gros, dans une boucle, si on veut ajouter une ligne à un array et qu'on procède comme ça:

$array[]['foo'] = 'bar';
$array[]['bar'] = 'foo';

Ca ne fonctionne pas comme on le désire (ça créé deux lignes d'une entrée chacune). On peut donc faire comme ça:

$array[] = array('foo' => 'bar', 'bar' => 'foo');

Ce qui fonctionne, mais n'est pas pratique ni flexible. Reste alors la solution de récupérer une référence vers la dernière ligne du tableau, qu'on créé spécialement pour l'occasion (sortez le champomy !) en utilisant la méthode sus-expliquée:

$row = & $data[];
$row['foo'] = 'bar';
$row['bar'] = 'foo';