5

私は現在、これらの投稿を作成日で並べ替えて、降順で表示できるようにする PHP 内で問題を抱えています。これを行うための PHP 関数を探していましたが、うまくいきませんでした。

これに対する簡単な解決策はありますか?どんなアイデアでも大歓迎です:)

array
      0 => 
        array
          'post_id' => string '1' (length=1)
          'user_id' => string '3' (length=1)
          'post' => string 'this is a post' (length=14)
          'created' => string '2012-04-05 20:11:38' (length=19)
     1 => 
        array
          'post_id' => string '2' (length=1)
          'user_id' => string '2' (length=1)
          'post' => string 'this is a post' (length=14)
          'created' => string '2012-04-05 20:11:38' (length=19)
     2 => 
        array
          'post_id' => string '3' (length=1)
          'user_id' => string '5' (length=1)
          'post' => string 'this is a post' (length=14)
          'created' => string '2012-04-05 20:11:38' (length=19)
4

5 に答える 5

2

指定された mysql 日時フィールドおよび順序で records/assoc_arrays の配列をソートします。

    function build_sorter($key, $dir='ASC') {
        return function ($a, $b) use ($key, $dir) {
            $t1=strtotime(is_array($a)?$a[$key]:$a->$key);
            $t2=strtotime(is_array($b)?$b[$key]:$b->$key);
            if($t1==$t2) return 0;
            return (str_to_upper($dir)=='ASC'?($t1 < $t2):($t1 > $t2)) ? -1 : 1;
        };
    }


    // $sort - key or property name 
    // $dir - ASC/DESC sort order or empty
    usort($arr, build_sorter($sort, $dir));
于 2013-11-20T11:53:51.960 に答える
1

strtotime()タイムスタンプを整数に変換するために使用できます。

于 2012-04-05T19:27:38.520 に答える