如何按主键和辅助键对多维数组进行排序?
例如,假设有以下数组:
$result = array();
$result[0]["prio"] = 1;
$result[0]["date"] = '2010-02-28';
$result[0]["post"] = "February's thoughts";
$result[1]["prio"] = 0;
$result[1]["date"] = '2010-04-20';
$result[1]["post"] = "April's thoughts";
$result[2]["prio"] = 0;
$result[2]["date"] = '2010-05-30';
$result[2]["post"] = "May's thoughts";
我希望将“prio”列排序为主键(升序)和“日期”作为辅助键(降序),得到:
$result[0]["prio"] = 0;
$result[0]["date"] = '2010-05-30';
$result[0]["post"] = "May's thoughts";
$result[1]["prio"] = 0;
$result[1]["date"] = '2010-04-20';
$result[1]["post"] = "April's thoughts";
$result[2]["prio"] = 1;
$result[2]["date"] = '2010-02-28';
$result[2]["post"] = "February's thoughts";
如何实现这一目标?
像这样使用 usort:
$result = array();
$result[0]["prio"] = 1;
$result[0]["date"] = '2010-02-28';
$result[0]["post"] = "February's thoughts";
$result[1]["prio"] = 0;
$result[1]["date"] = '2010-04-20';
$result[1]["post"] = "April's thoughts";
$result[2]["prio"] = 0;
$result[2]["date"] = '2010-05-30';
$result[2]["post"] = "May's thoughts";
function fct($a ,$b) {
if ($a['prio'] < $b['prio']) {
return -1;
} elseif ($a['prio'] > $b['prio']) {
return 1;
} else {
return strcmp($b['date'], $a['date']);
}
}
usort($result, "fct");
print_r($result);
Output:
Array
(
[0] => Array
(
[prio] => 0
[date] => 2010-05-30
[post] => May's thoughts
)
[1] => Array
(
[prio] => 0
[date] => 2010-04-20
[post] => April's thoughts
)
[2] => Array
(
[prio] => 1
[date] => 2010-02-28
[post] => February's thoughts
)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)