2012-05-10 17 views
0

私は連想配列の行が含まれていると私は価格によってそれらをソートしたいデータの配列を持って、日付などこれは、SQLを介して行うことができません - これらの値がデータベースに存在しないように私は単に次のサンプルデータを持つ大規模な配列を有する:などPHP - 価格によってデータ行の配列をソート、日付ASC、DESCなど

$data[0] = array(
       'id' => '2', 
       'price' => '400.00', 
       'date' => '2012-05-21', 
       ), 
$data[1] = array(
       'id' => '4', 
       'price' => '660.00', 
       'date' => '2012-02-21', 
       ), 
$data[2] = array(
       'id' => '8', 
       'price' => '690.00', 
       'date' => '2012-01-21', 
       ) 

..................

価格はASC/DESCとASC/DESCの日付で並べ替えなどの選択ボックスに基づいてこの変数を並べ替えることができます

残念です私はこの事件で私の心が空っぽになってしまったので、SQLを使ってそれをするのに慣れています。

+0

あなたはまだ何かを試してみましたか?ない場合は、手動では良いスタートです:http://php.net/manual/en/array.sorting.php –

+0

おかげ - 単一のアレイ上で私はすでに見てきましたが、それは単に基づいていますされていないことは? –

答えて

3

あなたはusortを使用して、必要なキーに基づいてソートさ関数を定義する必要があります。

私はあなたがこの機能を変更するかもしれないと思うhttp://www.php.net/manual/en/function.usort.php例2及び4

+0

参照として含めることができます:http://www.php.net/manual/en/function.usort.php - Example#2と#4を見てください。 – Armatus

+0

@Armatus完了、ありがとうございます。パーフェクト – gcochard

-1

使用usort

function sortBySubKey(&$array, $key) 
{ 
    return usort($array, create_function('$a,$b', 'if ($a["'.$key.'"] == $b["'.$key.'"]) return 0; return ($a["'.$key.'"] < $b["'.$key.'"]) ? -1 : 1;')); 
} 

あなたの配列が有効な値を保持していることを確認する必要がありますこの算術的な比較の意味で(<)、例えば。おそらくfloatとして、このためのUNIXタイムスタンプとして価格を日付に合格しなければならないというように...サンプルコードの下

0

はidで、それをソートします。

$capitals = array(
    array(
      'id' => '2', 
      'price' => '400.00', 
      'date' => '2012-05-21', 
      ), 
    array(
      'id' => '1', 
      'price' => '660.00', 
      'date' => '2012-02-21', 
      ), 
    array(
      'id' => '0', 
      'price' => '690.00', 
      'date' => '2012-01-21', 
      ) 

     ); 




    function cmp($a, $b) 
    { 
    return strcmp($a["id"], $b["id"]); 
    } 


usort($capitals, "cmp"); 

print_r($capitals); 
関連する問題