у меня есть этот скрипт
$todos=array(
'0' => array('id' => 46, 'nombre' => 'b2 miami downtown','precio' => 149.01,'tipo' => 'expedia'),
'1' => array('id' => 242,'nombre' => 'b2 Miami Downtown','precio' => 176.98,'tipo' => 'hotelbeds'),
'2' => array('id' => 240,'nombre' => 'b2 Miami Downtown','precio' => 131.62,'tipo' => 'hotelbeds'),
'3' => array('id' => 241,'nombre' => 'b2 Miami Downtown','precio' => 131.62,'tipo' => 'hotelbeds'),
'4' => array( 'id' => 178,'nombre' => 'Z Ocean Hotel South Beach','precio' => 400.93,'tipo' => 'expedia'),
'5' => array( 'id' => 254,'nombre' => 'Whitelaw Hotel','precio' => 142.29,'tipo' => 'hotelbeds'),
'6' => array( 'id' => 124, 'nombre' => 'Whitelaw Hotel','precio' => 132.04,'tipo' => 'tourico'),
'7' => array( 'id' => 62, 'nombre' => 'Westin Colonnade Coral Gables','precio' => 138.39,'tipo' => 'tourico'),
'8' => array( 'id' => 275, 'nombre' => 'Westgate South Beach','precio' => 166.79,'tipo' => 'hotelbeds'),
'9' => array( 'id' => 44, 'nombre' => 'W South Beach','precio' => 374.55,'tipo' => 'tourico'),
'10' => array( 'id' => 206, 'nombre' => 'Holiday Inn Express West Doral Miami Airport','precio' => 103.22,'tipo' => 'hotelbeds'),
'11' => array( 'id' => 117, 'nombre' => 'Holiday Inn Express Miami International Airport','precio' => 106.3,'tipo' => 'expedia'),
'12' => array( 'id' => 114, 'nombre' => 'Holiday Inn Express Miami Airport Doral Area','precio' => 113,'tipo' => 'tourico'),
'13' => array( 'id' => 78, 'nombre' => 'Holiday Inn Express Doral','precio' => 93.36,'tipo' => 'expedia'),
'14' => array( 'id' => 62, 'nombre' => 'Holiday Inn Express & Suites Kendall East Miami','precio' => 128.46,'tipo' => 'expedia'),
'15' => array( 'id' => 18, 'nombre' => 'Best Western Plus Kendall Hotel & Suites','precio' => 429.55,'tipo' => 'tourico'),
'16' => array( 'id' => 19, 'nombre' => 'Best Western Plus Kendall Hotel & Suites','precio' => 429.55,'tipo' => 'expedia'),
'17' => array( 'id' => 120, 'nombre' => 'Best Western Kendall Hotel & Suites','precio' => 114.27,'tipo' => 'expedia'),
'18' => array( 'id' => 69, 'nombre' => 'Holiday Inn Express & Suites Kendall','precio' => 126.5,'tipo' => 'expedia'));
echo "<pre>";
print_r($todos);
function comp($a,$b){
if(soundex($a['nombre'])==soundex($b['nombre'])) return($a['precio']-$b['precio']);
if(soundex($a['nombre'])!=soundex($b['nombre'])) return strcmp($a['nombre'], $b['nombre']);
}
usort($todos,'comp');
print_r($todos);
echo "<pre>";
Мне нужно отсортировать массив сначала по названию отеля, а затем каждый отель по цене (прецио). Причина использования soundex заключается в том, что один и тот же отель может иметь другое название в зависимости от провайдера (поставщика), поэтому мне нужно сгруппировать отели и поставить сначала самую низкую цену, чтобы удалить остальные поэтому я могу предложить только лучшую цену.
Выход:
Array
(
[0] => Array
(
[id] => 46
[nombre] => b2 miami downtown
[precio] => 149.01
[tipo] => expedia
)
[1] => Array
(
[id] => 242
[nombre] => b2 Miami Downtown
[precio] => 176.98
[tipo] => hotelbeds
)
[2] => Array
(
[id] => 240
[nombre] => b2 Miami Downtown
[precio] => 131.62
[tipo] => hotelbeds
)
[3] => Array
(
[id] => 241
[nombre] => b2 Miami Downtown
[precio] => 131.62
[tipo] => hotelbeds
)
[4] => Array
(
[id] => 178
[nombre] => Z Ocean Hotel South Beach
[precio] => 400.93
[tipo] => expedia
)
[5] => Array
(
[id] => 254
[nombre] => Whitelaw Hotel
[precio] => 142.29
[tipo] => hotelbeds
)
[6] => Array
(
[id] => 124
[nombre] => Whitelaw Hotel
[precio] => 132.04
[tipo] => tourico
)
[7] => Array
(
[id] => 62
[nombre] => Westin Colonnade Coral Gables
[precio] => 138.39
[tipo] => tourico
)
[8] => Array
(
[id] => 275
[nombre] => Westgate South Beach
[precio] => 166.79
[tipo] => hotelbeds
)
[9] => Array
(
[id] => 44
[nombre] => W South Beach
[precio] => 374.55
[tipo] => tourico
)
[10] => Array
(
[id] => 206
[nombre] => Holiday Inn Express West Doral Miami Airport
[precio] => 103.22
[tipo] => hotelbeds
)
[11] => Array
(
[id] => 117
[nombre] => Holiday Inn Express Miami International Airport
[precio] => 106.3
[tipo] => expedia
)
[12] => Array
(
[id] => 114
[nombre] => Holiday Inn Express Miami Airport Doral Area
[precio] => 113
[tipo] => tourico
)
[13] => Array
(
[id] => 78
[nombre] => Holiday Inn Express Doral
[precio] => 93.36
[tipo] => expedia
)
[14] => Array
(
[id] => 62
[nombre] => Holiday Inn Express & Suites Kendall East Miami
[precio] => 128.46
[tipo] => expedia
)
[15] => Array
(
[id] => 18
[nombre] => Best Western Plus Kendall Hotel & Suites
[precio] => 429.55
[tipo] => tourico
)
[16] => Array
(
[id] => 19
[nombre] => Best Western Plus Kendall Hotel & Suites
[precio] => 429.55
[tipo] => expedia
)
[17] => Array
(
[id] => 120
[nombre] => Best Western Kendall Hotel & Suites
[precio] => 114.27
[tipo] => expedia
)
[18] => Array
(
[id] => 69
[nombre] => Holiday Inn Express & Suites Kendall
[precio] => 126.5
[tipo] => expedia
)
)
ОТОРТИРОВАННЫЙ МАССИВ
Array
(
[0] => Array
(
[id] => 120
[nombre] => Best Western Kendall Hotel & Suites
[precio] => 114.27
[tipo] => expedia
)
[1] => Array
(
[id] => 19
[nombre] => Best Western Plus Kendall Hotel & Suites
[precio] => 429.55
[tipo] => expedia
)
[2] => Array
(
[id] => 18
[nombre] => Best Western Plus Kendall Hotel & Suites
[precio] => 429.55
[tipo] => tourico
)
[3] => Array
(
[id] => 78
[nombre] => Holiday Inn Express Doral
[precio] => 93.36
[tipo] => expedia
)
[4] => Array
(
[id] => 206
[nombre] => Holiday Inn Express West Doral Miami Airport
[precio] => 103.22
[tipo] => hotelbeds
)
[5] => Array
(
[id] => 117
[nombre] => Holiday Inn Express Miami International Airport
[precio] => 106.3
[tipo] => expedia
)
[6] => Array
(
[id] => 114
[nombre] => Holiday Inn Express Miami Airport Doral Area
[precio] => 113
[tipo] => tourico
)
[7] => Array
(
[id] => 69
[nombre] => Holiday Inn Express & Suites Kendall
[precio] => 126.5
[tipo] => expedia
)
[8] => Array
(
[id] => 62
[nombre] => Holiday Inn Express & Suites Kendall East Miami
[precio] => 128.46
[tipo] => expedia
)
[9] => Array
(
[id] => 44
[nombre] => W South Beach
[precio] => 374.55
[tipo] => tourico
)
[10] => Array
(
[id] => 275
[nombre] => Westgate South Beach
[precio] => 166.79
[tipo] => hotelbeds
)
[11] => Array
(
[id] => 62
[nombre] => Westin Colonnade Coral Gables
[precio] => 138.39
[tipo] => tourico
)
[12] => Array
(
[id] => 124
[nombre] => Whitelaw Hotel
[precio] => 132.04
[tipo] => tourico
)
[13] => Array
(
[id] => 254
[nombre] => Whitelaw Hotel
[precio] => 142.29
[tipo] => hotelbeds
)
[14] => Array
(
[id] => 178
[nombre] => Z Ocean Hotel South Beach
[precio] => 400.93
[tipo] => expedia
)
[15] => Array
(
[id] => 240
[nombre] => b2 Miami Downtown
[precio] => 131.62
[tipo] => hotelbeds
)
[16] => Array
(
[id] => 241
[nombre] => b2 Miami Downtown
[precio] => 131.62
[tipo] => hotelbeds
)
[17] => Array
(
[id] => 46
[nombre] => b2 miami downtown
[precio] => 149.01
[tipo] => expedia
)
[18] => Array
(
[id] => 242
[nombre] => b2 Miami Downtown
[precio] => 176.98
[tipo] => hotelbeds
)
)
Как видите, «b2 Miami Downtown» должен быть в верхней части списка, а не последним.
Пожалуйста, помогите с этим.
Спасибо!!!.