使用类似值对数组进行排序

时间:2018-03-24 20:55:59

标签: php arrays sorting

我有一个包含日期字符串的数组数组。

我希望按此日期对这些数组进行排序。

似乎是这里的猴子扳手是一些数组共享日期字段的相同值以及tid和/或thing和/或other_thing的类似值。

Array (
    [0] => Array (
            [tid] => 44
            [date] => 1442905200
            [thing] => 2J5265B
            [other_thing] => Scoop
        )
    [1] => Array (
            [tid] => 47
            [date] => 1442905200
            [thing] => 2J5265B
            [other_thing] => Scoop
        )
    [2] => Array (
            [tid] => 48
            [date] => 1430031600
            [thing] => 2E5116A
            [other_thing] => shower
        )
    [3] => Array (
            [tid] => 46
            [date] => 1430031600
            [thing] => 2E5116A
            [other_thing] => shower
        )
    [4] => Array (
            [tid] => 80
            [date] => 1464246000
            [thing] => 7J6147A
            [other_thing] => shower
        )
    [5] => Array (
            [tid] => 47
            [date] => 1442905200
            [thing] => 2J5265B
            [other_thing] => TTT
        )
    [6] => Array (
            [tid] => 44
            [date] => 1442905200
            [thing] => 2J5265B
            [other_thing] => TTT
        )
    [7] => Array (
            [tid] => 46
            [date] => 1504594800
            [thing] => 2J7248A
            [other_thing] => shower
        )
    [8] => Array (
            [tid] => 45
            [date] => 1513238400
            [thing] => 2J7348C
            [other_thing] => TTT
        )
)

这就是我想做的事。

我想对此数组进行排序。

2 个答案:

答案 0 :(得分:0)

您应该考虑使用usort()Docs)。此功能允许您指定比较器以具有用户定义的排序算法。

生成的代码可能如下所示:

function cmp($a, $b)
{
    return $b['date'] - $a['date'];
}

usort($your_array, "cmp");

答案 1 :(得分:0)

一个快进解决方案是在构建数组时使用date作为数组的键,然后您可以使用PHP ksort()简单地对键进行排序。

为了避免密钥双重性,请检查密钥是否设置为处理此类情况。

// building the data array from database or so
$array = array(); // the array to be sorted
$duplicity = array(); // track the duplicity date records
foreach ($data as $key => $value) {
  $counter = 0;
  @$duplicity[$value['date']]++; // suppressing notices 
  $array[$value['date'].'_'.$duplicity[$value['date']]] = $value;
}
ksort($array);  // sort array by keys
print_r($array);  // just check the sorted array

演示:https://eval.in/978160

更多排序功能Sorting arrays