按最新排列阵列

时间:2011-02-11 08:19:20

标签: php arrays sorting

[0] => Array
    (
        [id] => 26997
        [product_id] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => 1406
                        [type_id] => 1
                        [title] => Shrek - Forever After
                        [cover] => 
                        [coverid] => 0
                        [inserted_by] => 0
                        [inserted_date] => 2011-02-11 14:28:08
                        [status_id] => 1
                    )

            )

        [variable_id] => 1
        [variable_value] => 10
        [master_value] => 
        [released_date] => 2010-12-07
        [price] => Array
            (
                [0] => Array
                    (
                        [product_id] => 1406
                        [media_format] => BLURAY
                        [price] => 349000
                        [discount] => 5
                    )

            )

    )

[1] => Array
    (
        [id] => 26678
        [product_id] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => 1375
                        [type_id] => 1
                        [title] => Shrek Quadrilogy : The Whole Story ( 4 Disc )
                        [cover] => 2066940989de9372d9c39e216430cd5a.jpg
                        [coverid] => 1051
                        [inserted_by] => 0
                        [inserted_date] => 2011-02-07 11:23:21
                        [status_id] => 1
                    )

            )

        [variable_id] => 1
        [variable_value] => 10
        [master_value] => 
        [released_date] => 2011-02-04
        [price] => Array
            (
                [0] => Array
                    (
                        [product_id] => 1375
                        [media_format] => BLURAY
                        [price] => 999000
                        [discount] => 5
                    )

            )

    )

我想按release_date排序,如果你查看结果我希望结果是最新的。请帮忙......

3 个答案:

答案 0 :(得分:2)

这是用户回调排序功能的目的

function srtReleased($a, $b) {
    $aDate = strtotime($a['released_date']);
    $bDate = strtotime($b['released_date']);
    if ($aDate == $bDate) {
        return 0;
    }
    return ($aDate > $bDate) ? -1 : 1;
}


usort($array, "srtReleased");

答案 1 :(得分:0)

使用像Bubble Sort之类的简单内容(假设您的数组不是太大,否则您最好使用更有效的排序算法):

for($i = 0; $i < count($myArray) - 1; $i++) {
  for($j = $i; $j < size(myArray) - 1; $j++) {
    if($myArray[$i]['released_data'] < $myArray[$j]['released_data']) {
      // Swap entries
      $tmp = $myArray[$i + 1];
      $myArray[$i + 1] = $myArray[$i];
      $myArray[$i] = $tmp;
    }
  }
}

它基本上检查下一个项目是否大于当前项目,如果是这种情况则交换它们。

你也可以使用usort,正如nikic所建议的那样。要使用它,你需要创建一个比较函数,使用我在示例中显示的相同比较,但包含在函数中。

答案 2 :(得分:0)

我的建议是使用usort,正如nikic建议的那样。它更优雅。此外,我不建议使用冒泡排序。它的唯一优势是更容易理解。

这是一个链接,指向某人在PHP中发布的插入排序:

http://www.think-lamp.com/2009/08/fastest-insertion-sort-in-php/

如果您可以根据发布日期采用此功能进行排序,并使用usort功能,那么您将开始营业。