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