Php 按最新顺序排列数组

Php 按最新顺序排列数组,php,arrays,sorting,Php,Arrays,Sorting,我想按发布日期排序,如果你查看结果,我希望结果是最新的。请帮助…使用一些简单的方法,如(假设数组不是太大,否则最好使用更有效的排序算法): ($i=0;$i

我想按发布日期排序,如果你查看结果,我希望结果是最新的。请帮助…

使用一些简单的方法,如(假设数组不是太大,否则最好使用更有效的排序算法):

($i=0;$i{ 对于($j=$i;$j 它基本上检查下一个项目是否比当前项目大,如果是,则交换它们


你也可以使用,就像尼基克建议的那样。要使用它,您需要创建一个比较函数,使用与我在示例中显示的相同的比较,但包装在函数中。

这就是用户回调排序函数的用途

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所建议的那样。它要优雅得多。另外,我不建议使用冒泡排序。它唯一的优点是更容易理解

这里有一个链接指向在PHP中未实现的插入排序:


如果您可以使用此功能根据发布日期进行排序,并使用usort功能,则您将投入业务。

如果您从数据库中获取该数据,请使用
ORDER BY
在查询中已经进行排序。这样更快更简单。否则,请使用
usort
指定自定义排序函数。这里有许多关于多维数组和排序的问题可能重复:答案(通常)是相同的:使用
usort
。为什么不这样做?这很容易理解,而且(正如我已经提到的)对于小列表,速度损失不大。在这种情况下,实施一些复杂的东西是浪费时间的。相信usort()在内部也使用冒泡排序算法也不会太牵强…?我试过这个算法,它是有效的,我不能使用usort,它说错误。。。谢谢!!usort()只在代码中出现错误时才会说错误。。。向我们展示代码,这样我们就可以帮助修复它,而不是简单地不使用它。。。我对不同编程语言的知识有时会相互交叉。。。(我将更改示例)@Veger-所有PHP的排序算法都基于quicksort的变体,而不是基于气泡排序解释“不工作”的意思(错误?什么?)并显示您的代码。。。usort()是执行此操作的正确方法。。。现在解释你的错误
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;
    }
  }
}
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");