我在数组中有一些预订数据,它们已经按[eng]排序,但我也希望按[ampm]排序,因此每组[eng]按[ampm]排序。有谁知道如何在PHP中完成这个?
Array
(
[xml] => Array
(
[booking] => Array
(
[0] => Array
(
[date] => 29/12/10
[eng] => ALS
[ampm] => AM
[time] => 2.00
[type] => S
[seq] =>2
[duration] => 0
)
[1] => Array
(
[date] => 29/12/10
[eng] => BDS
[ampm] => PM
[time] => 2.30
[type] => S
[seq] => 3
[duration] => 0
)
答案 0 :(得分:3)
你可以使用usort:http://www.php.net/manual/en/function.usort.php
这样当两个项目中的eng
不同时,您可以相应地返回1或-1,但如果eng
相同,那么您可以比较ampm
返回0 ,1或-1相应。
答案 1 :(得分:2)
您可以使用usort()函数来定义回调以执行自己的排序比较逻辑:
<?php
function myBookingComparer($booking1, $booking2)
{
// the logic
}
usort($bookingArray, "myBookingComparer");
答案 2 :(得分:2)
据推测,你正在做类似
的事情usort($array, function ($a, $b) {
return strcmp($a['eng'], $b['eng']);
});
你需要做这样的事情:
usort($array, function ($a, $b) {
$eng = strcmp($a['eng'], $b['eng']);
if ($eng == 0) {
return strcmp ($a['ampm'], $b['ampm']);
} else {
return $eng;
}
});