3

我的数组有 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;
        }
    });
}

我很想得到一些帮助,整天都在拉我的头发。

非常感谢你!

4

1 回答 1

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"];
            }
        }
    });
}

DEMO: http://codepad.viper-7.com/3PMtmA

于 2012-11-28T20:29:41.667 回答