1.natürlich kann man da foreach nehmen, hat es denn Vorteile?
Wenn wir die DB->Array-Sache vorweglassen:
foreach() hat den Vorteil, dass das Array automatisch sequentiell abgearbeitet wird. Mit einer while- oder do-while-Schleife müsste in jedem Durchlauf geprüft werden, ob der Zeiger am Ende steht oder nicht. In jedem Durchlauf müsste der Zeiger manuell verschoben werden - bzw. indirekt mit next(). Alternativ könnte man auch die einträge des Arrays zählen und mit einer for-Schleife arbeiten (und müsste wieder den Zeiger verschieben).
Alles in allem eine etwas unsinnige vorgehensweise, wenn man doch foreach zur Verfügung hat :)