Зачем сортировать? Просто пройдись один раз по массиву и выбери нужные данные?
$a=json_decode($json, true);
$res=array();
foreach($a as $k=>$v){
if(!isset($res[$v['strana']])){
$res[$v['strana']]=$v['otel_stoimost'];
}else{
$res[$v['strana']]=min($res[$v['strana']], $v['otel_stoimost']);
}
}
print_r($res);
Потом если есть необходимость отсортируй массив $res по алфавиту
Если нужна в итоге JSON структура как в твоем примере, то добавляй в итоговый массив не только стоимость, но и другие данные.
$a=json_decode($json, true);
$res=array();
foreach($a as $k=>$v){
if(!isset($res[$v['strana']])){
$res[$v['strana']]=$v;
}else{
if($v['otel_stoimost']<$res[$v['strana']]['otel_stoimost']){
$res[$v['strana']]=$v;
}
}
}
$min_prices=array();
foreach($res as $v){
$min_prices[]=$v;
}
echo json_encode($min_prices);
Если нужен просто вывод списка, то достаточно данных полученных первым способом
echo '<ul>';
foreach($res as $k=>$v){
echo '<li>'.$k.' от '.$v.' руб.</li>';
}
echo '</ul>';