můžete seskupit již v databázi.nebo seřadit podle sekce a poté iterovat a vydat správný separační kód, když se sekce změní. dočasné pole je také řešením. vzhledem k vašemu příkladu kódu, maby, vás to může nasměrovat na jeden možný směr (ačkoli dočasné pole samozřejmě není elegantní řešení, ale pokud nejsou data tolik, na tom vlastně nezáleží)
<?
$result = array();
$result[] = array('section' => 'php','note' => 'bla');
$result[] = array('section' => 'php','note' => 'bla');
$result[] = array('section' => 'perl','note' => 'bla');
$result[] = array('section' => 'java','note' => 'bla');
$grouped = array();
for($i=0;$i<count($result);$i++) {
$grouped[$result[$i]['section']][] = $result[$i]['note'];
}
print_r($grouped);
?>