2012-05-04 11 views
1

私はcodeigniterのブログサイトに取り組んでいます。ブログは最後の1番目の注文に掲載されています。最後の1つは上に表示されます。変数$ blogsには、リストされるすべてのブログとdate_created。$ blogsが表示されますが、必要な順序でブログが表示されません。次に、date_created値でブログを並べ替えます。配列を日付順に並び替えます

ブログを返すメインモデル関数は、ここで

public function LoadAllBlogs(){ 

     $blogs = array(); 

     $this->db->select('id'); 
     $this->db->from('blog'); 
     $q= $this->db->get();         

     foreach ($q->result() as $row) { 
       $blog = new Blog(); 
       $blog->loadWithLatestPublishedEntry($row->id); 
       $blogs[] = $blog; 
     } 

    return $blogs; //contain all the blogs entry and the date in which blog is created 
} 

で誰も私を助けることができる.....

+0

何あなたの配列が –

+0

http://us3.php.net/usortように見えるんことはあなたの友達です。 –

答えて

5

あなたは彼らがあなたのクエリにORDER BY句を追加する必要があるとしていますデータベースによってソートされます。それはかなり簡単です、order_by()関数をフィールド名に渡し、昇順の場合はasc、降順の場合はdescのいずれかを渡します。

$this->db->select('id'); 
$this->db->from('blog'); 
$this->db->order_by("date_created", "desc"); 
$q = $this->db->get(); 
+0

あなたは現在table.butからの値をリストしています。私はすべての値と日付を配列に持っています。同じ配列の日付を使って配列をソートすることは可能です。 – Balu

+0

データベースがあなたのためにソートできるようにすると(これはしばしばより効率的です)、foreachループで、作成している配列をソートする必要なしに正しい順序でレコードを取得します。 –

1


これは、あなたが仕事をする各2本の支柱と、使用してPHPのuksort(配列& $配列、呼び出し可能な$のcmp_function)を比較するカスタム機能を必要とするように私には聞こえます。

http://php.net/manual/en/function.uksort.php

0

@cillosisは権利である - あなたは次のことを試すことができ、そのように行かないつもりとしてクエリ

順を使用しますが -

私がブログをするかわかりません"Y-m-d"

foreach ($q->result() as $row) { 
       $blog = new Blog(); 
       $blog->loadWithLatestPublishedEntry($row->id); 

       $time = strtotime($blog->posting_date); 

       $blogs[$time] = $blog; 
     } 

ksort($blogs); //Oldest first 
krsort($blogs); //Latest first 

- 私はあなたの日付の値のようなものであると仮定し、同様に配列が見えます

// strtotimeを使用している場合 - これを覚えておいてください - > m/d/yまたはdmy形式の日付は、さまざまなコンポーネント間のセパレータを見ることで明確になります。スラッシュ(/)、アメリカのm/d/yが仮定されます。セパレータがダッシュ( - )またはドット(。)の場合は、ヨーロッパのd-m-y形式が使用されます。

http://www.php.net/manual/en/function.krsort.php

関連する問題