Perchè per lui sono STRINGHE e la stringa "123" è "più piccola" della stringa "2" (ordinamento alfabetico)
Per cui devi fare un "casting" quando valorizzi l'array

Esempio superbanale
Codice PHP:
foreach ($mioarray as $key=>$value)
  
$mioarray[$key] = (int)$value
In generale devi fare il casting con (int) o (float) o altro tipo numerico