Voila! Спасибо RomikChef за подсказку!
foreach (file(\'list.txt\') as $line) list($arr[\'name\'][],$arr[\'age\'][],$arr[\'city\'][])=explode("|",$line);
$cities=array_unique($arr[\'city\']);
foreach ($cities as $j=>$k){
foreach($arr[\'subj\'] as $i=>$l)
if ($k==$l)
$sub[$j][]=array($arr[\'name\'][$i],$arr[\'age\'][$i]);
}
А вот как бы теперь так сделать, чтобы скажем Самара всегда была первым элементом этого массива? Подозреваю, что надо сделать этот элемент первым еще в массиве cities, только вот как?