我的数组的排序值为1-6。
Array: 2 5 6 2 5 1 1
然后我可以在其他任何事情之前得到第一个。例如。
所以它就像2 2 5 6 5 1 1
。但是,我需要按其他排序值和日期排序。
示例:2 2 1 1 5 5 6
并且还附加了日期,需要按降序排序。
最后的例子:
2 - 2012-06-02
2 - 2012-06-01
1 - 2012-03-05
1 - 2012-03-01
5 - 2012-08-09
5 - 2012-01-01
6 - 2012-11-29
我的函数目前看起来像这样,并由usort函数使用。 ObjektTyp是排序值,不同的数字取决于它是什么类型的房子。所有这些值都来自XML源。
function sort_by_type(&$array, $sort = NULL)
{
usort($array, function($a, $b) use ($sort)
{
if ($a["ObjektTyp"] == $sort) {
return -1;
} else {
return 1;
}
});
}
我很想得到一些帮助,整天都在拉我的头发。
非常感谢!
答案 0 :(得分:0)
首先按数字排序,然后按日期排序。这可以通过检查数字是否相同,然后按日期排序来完成。
这样的事情:
function sort_by_type(&$array, $sort = NULL){
usort($array, function($a, $b) use ($sort){
if($a["ObjektTyp"] == $b["ObjektTyp"]){
// already sorted by number, sort by date
return strtotime($b['date']) - strtotime($a['date']); // sort descending
}
else{
// sort by number
if ($a["ObjektTyp"] == $sort) {
return -1; // 2s to the top
}
elseif($b["ObjektTyp"] == $sort){
return 1; // 2s to the top
}
else {
return $a["ObjektTyp"] - $b["ObjektTyp"];
}
}
});
}