Najpierw zebrać wyniki.
$liczba =123456;
$podzielne = [];
for($i = 2; $i <= 123; $i++){
if ($liczba %$i === 0){
$podzielne[] = $i;
}
}
Potem je formatować.
Gdybyś nie potrzebował słowa 'oraz' wystarczyłoby użyć implode.
echo implode(', ', $podzielne);
Jeśli 'oraz' jest wymagany to można sformatować tekst wykorzystując np. array_walk.
$result = '';
$userdata['count'] = count($podzielne);
$userdata['result'] = &$result;
array_walk($podzielne, function($value, $key, $userdata){
$separator = '';
if($key == $userdata['count'] - 2)
$separator = ' oraz ';
elseif($userdata['count'] > 1 && $key != $userdata['count'] - 1)
$separator = ', ';
$userdata['result'] .= $value.$separator;
},$userdata);
echo $result;
Można też sformatować wynik innymi sposobami ale napewno powinien istnieć podział między obliczeniami a wyświetlaniem wyników.