2011-02-20 9 views
1

次の配列を正しい順番に並べ替える方法はありますか?日付で2次元配列を並べ替える

[0] => Array 
    (
     [date] => Sat, 12 Feb 2011 16:55:13 -0500 
     [title] => Product 1 
     [link] => http://blabla/product-1 
    ) 

[1] => Array 
    (
     [date] => Sat, 25 Sep 2010 17:52:24 -0400 
     [title] => Product 2 
     [link] => http://blabla/product-2 
    ) 

[2] => Array 
    (
     [date] => Sun, 05 Dec 2010 17:41:32 -0500 
     [title] => Product 3 
     [link] => http://blabla/product-3 
    ) 

[3] => Array 
    (
     [date] => Sun, 28 Nov 2010 09:14:39 -0500 
     [title] => Product 4 
     [link] => http://blabla/product-4 
    ) 

[4] => Array 
    (
     [date] => Tue, 07 Dec 2010 18:43:45 -0500 
     [title] => Product 5 
     [link] => http://blabla/product-5 
    ) 

RSSフィードの配列は、このようになります。

Iは、(明らかに[日付]に基づく)を時系列順に配列をソートしたい:商品1、商品5、製品3、プロダクト4、製品2

行うことができるようにするために実際の注文で最新の製品を表示する(彼らが私に与えた奇妙な順序ではない - btw、偽の製品名、注文は本当に完全に

ありがとう!

答えて

2

使用usort:http://www.phpbuilder.com/manual/function.usort.php

次の2つの(この場合は、あなたの日付文字列)「要素」を比較し、それらの正しい順序を返す比較関数を記述します。

編集:strtotime:http://php.net/manual/en/function.strtotime.phpを使用すると、日付文字列をタイムスタンプに変換し、結果のタイムスタンプの比較を返すことができます。

あなたが 日付値のソートされた配列の順序に従って元の配列を注文する array_multisortを使用することができます
+0

うん、私はusortを使用していますが、私は右&正しい比較を見つけることができません関数 ! (私は実際にこれらの関数を日付とともに使用するのに慣れていません) – Max

+1

@Max:あなた自身の関数を以下のように作成します: 'function compareByDate($ item1、$ item2){return strtotime($ item1 ['date']) - strtotime $ item2 ['日付']); } 'を呼び出し、その名前(' compareByDate')をusortに渡します。 – Jonah

+0

日付比較の詳細を追加 – Bogatyr

2

$keyValues = array(); 
foreach ($arr as $item) { 
    $keyValues[] = strtotime($item['date']); 
} 
sort($keyValues); 
array_multisort($arr, $keyValues); 
関連する問題