我有一系列文章。
$allarticles = Array ([0] => Array ([id] => 24,
[article_id] => 74,
[created] => 2011-01-01 20:48:48 )
[1] => Array ( [id] => 39,
[article_id] => 94,
[created] => 2011-02-21 21:06:44 )
);
我想按创建日期排序数组(DESC最近的第一个)。
我感谢任何帮助。
感谢。
答案 0 :(得分:3)
您可以使用usort
:
function csort($a, $b) {
return strcmp($b['created'], $a['created']);
}
usort($allarticles, 'csort');
答案 1 :(得分:1)
我相信你正在寻找usort。
function sortbycreated($a,$b){
return ($a['created']>$b['created']?1:($a['created']<$b['created']?-1:0));
}
usort($allarticles,'sortbycreated');
仍在醒来,所以如果按相反的顺序排序,请交换1
和-1
。此外,这假设dats是实际的“time()”。如果它们不是你需要解析的值,你可以在检查之前进行比较,但所有这些都可以在新功能中完成。
修改强>
如果它们还不是time()
s:
function sortbycreated($a,$b){
$_a = strtotime($a['created']); $_b = strtotime($b['created']);
return ($_a > $_b ? 1 : ($_a < $_b ? -1 : 0));
}
答案 2 :(得分:0)
http://www.php.net/manual/en/function.uasort.php
uasort($allarticles, function ($a, $b) {
$diff =
/*
write code here to convert the string dates to numeric equivalents and subtract them.
If you want to reverse the order, revers the way you subtract.
*/
return $diff;
});
答案 3 :(得分:0)
$sortedArticles = array();
foreach ( $allarticles as $article ) {
$timestamp = strtotime($article ['created']);
$sortedArticles[$timestamp] = $article;
}
ksort($sortedArticles);
var_dump($sortedArticles);
或者当您从数据库中获取数据时,只需执行ORDER BY created
。
答案 4 :(得分:0)
uasort($allarticles, 'sort_by_date');
function sort_by_date($a, $b) {
if (strtotime($a['created']) == strtotime($b['created'])) {
return 0;
}
return strtotime($a['created') > strtotime($b['created']) ? 1 : -1;
}
答案 5 :(得分:0)
您可以使用CakePHP静态Set :: sort方法here。
答案 6 :(得分:0)
可能最好在数据库中对此进行排序。对我来说,对数据库中的免费迭代进行迭代是没用的。
如果您有兴趣。你必须这样做:
$this->YourModel->find('all', array('order'=>'created'));
否则只需使用在胎面中提出的其他解决方案之一。