I would pop off your rate array so you sort it by itself using asort (which maintains indexes).
so...
$rate_array = array[rate];
asort($rate_array)
now you have an array of all the rates and indexes in the right order. Now, I would break apart all of the arrays then rebuild one big one with some code kind of like
foreach($rate_array as $key=>$value){
$id_value = $id_array[$key];
array_push($new_id_array);
etc...
}