0

たくさんの記事があります。

 $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の最新のものが最初)で配列を並べ替えたいと思います。

助けていただければ幸いです。

ありがとう。

4

7 に答える 7

3

使用できますusort

function csort($a, $b) {
    return strcmp($b['created'], $a['created']);
}

usort($allarticles, 'csort');

デモ

于 2011-02-22T14:57:26.883 に答える
1

usortを探していると思います。

function sortbycreated($a,$b){
  return ($a['created']>$b['created']?1:($a['created']<$b['created']?-1:0));
}
usort($allarticles,'sortbycreated');

まだ起きているので、逆の順序でソートする場合は、1とを入れ替え-1ます。また、これはデータが実際の「time()」であることを前提としています。そうでない場合は、チェックする前に比較できる値に解析する必要がありますが、これはすべて新しい関数で実行できます。

編集

それらがまだtime()s でない場合:

function sortbycreated($a,$b){
  $_a = strtotime($a['created']); $_b = strtotime($b['created']);
  return ($_a > $_b ? 1 : ($_a < $_b ? -1 : 0));
}
于 2011-02-22T14:56:43.063 に答える
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;
});
于 2011-02-22T14:56:00.733 に答える
0
$sortedArticles = array();
foreach ( $allarticles as $article ) {
    $timestamp = strtotime($article ['created']);
    $sortedArticles[$timestamp] = $article;
}
ksort($sortedArticles);

var_dump($sortedArticles);

または、データベースからデータを取得するときは、ORDER BY created.

于 2011-02-22T14:56:38.480 に答える
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;
}
于 2011-02-22T14:56:39.380 に答える
0

ここでCakePHP の静的 Set::sort メソッドを使用できる場合があります。

于 2011-02-22T17:54:34.220 に答える
0

おそらく、代わりにデータベース内でこれをソートする方が良いでしょう。私にとって、データベースから無料で提供されるものを反復することは無意味です。

ご興味のある方はどうぞ。これを行うだけです:

$this->YourModel->find('all', array('order'=>'created'));

それ以外の場合は、トレッドで提案されている他のソリューションのいずれかを使用してください。

于 2011-02-22T19:26:17.570 に答える