Ho questa tabella di hash da ordinare in base all'età
Codice PHP:
%eta=( Alberto => 28,
Stefano => 31,
Luca => 20,
Sandro => 21);
@k = keys(%eta);
@v = values(%eta);
$n=$#k;
$p=$n;
do
{
$scambio=0;
for($i=0;$i<($n-1);$i++){
if($v[$i] < $v[$i+1]){
$app=$v[$i];
$app1=$k[$i];
$v[$i]=$v[$i+1];
$k[$i]=$k[$i+1];
$v[$i+1]=$app;
$k[$i+1]=$app1;
$scambio=1;
$p=$i+1;
}
$n=$p;
}
}
while($scambio==0);
print"@k\n";
print"@v\n";
In questo modo funziona, l'unico problema è che i valori non sono numeri ma stringhe e quindi il 20 viene prima del 21.