Direi che il loop è superfluo ed aggiunge unnecessary complexity.

Codice PHP:
$source = ['numero;lettera''7;z''4;m''2;b'];
$header array_shift($source);
sort($source);
$result array_unshift($source$header); 

Spero sia di aiuto