das ist auch klar

... mit deiner foreach - schleife überschreibst du permanent die referenz.
das verhalten von php ist also richtig, auch wenn es strange erscheint.
korrekt würde dein skript so arbeiten:
PHP-Code:
<?php
#Referenzen auf Objekte erzeugen
$references=array();
for ($i=0,$m=count($objects);$i<$m;$i++) {
$references[] = &$objects[$i];
}
?>
grüße
axo