1

複数の配列を並べ替える方法についてサポートが必要です。これは私が得たものです:

Array ( 
   [ALU0000001] => 
         Array ( [0] => Array ( [period] => 2012 [codCurse] => S12-2030 [idPersona] => ALU0000001 [date] => 2012-04-02 [amount] => 238.00 [active] => X ) 
                 [1] => Array ( [period] => 2012 [codCurse] => S12-2030 [idPersona] => ALU0000001 [date] => 2012-05-02 [amount] => 238.00 [active] => X )
                 [2] => Array ( [period] => 2012 [codCurso] => S12-2030 [idPersona] => ALU0000001 [date] => 2012-06-02 [amount] => 238.00 [active] => X )
                 [3] => Array ( [period] => 2013 [codCurso] => S12-2030 [idPersona] => ALU0000001 [date] => 2013-01-02 [amount] => 238.00 [active] => X )

   [ALU0000005] =>
         Array ( [0] => Array ( [period] => 2013 [codCurse] => S13-2010 [idPersona] => ALU0000005 [date] => 2013-03-01 [amount] => 225.00 [active] => X )
                 [1] => Array ( [period] => 2013 [codCurse] => S13-2010 [idPersona] => ALU0000005 [date] => 2013-03-02 [amount] => 333.00 [active] => X ) 
                 [2] => Array ( [period] => 2013 [codCurse] => S13-2010 [idPersona] => ALU0000005 [date] => 2013-04-02 [amount] => 333.00 [active] => X ) 

このようなものを取得するには、マルチアレイを期間の日付で並べ替える必要があります

  Y   M   D
  2012 2012-04-02 ALU00000001 .....
  2012 2012-05-02 ALU00000005 .....
  2012 2012-06-01 ALU00000001 .....
  2013 2013-01-01 ALU00000001 .....
  2013 2013-06-01 ALU00000001 .....
  2013 2013-12-24 ALU00000005 .....

ありがとう

4

2 に答える 2

1

danpが言うように、 PHPusortを使用したカスタムソート関数が必要になります。

構文を使用してCodeigniterでこれを実行します。

usort($data_array, array('controller', 'sort_function'));

function sort_function($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
于 2013-01-08T13:43:48.757 に答える
0

メインの配列キーはあまり機能しないことを考えると(dateキーによって値にすでに含まれているため)、無視しても問題ありません。したがって、最初にすべての値を1つの配列に収集して、後で並べ替えることができるようにします。

$allItems = array();
foreach ($outputArr as $arr) { // $outputArr should be the name of your array
    $allItems = array_merge($allItems,array_values($arr));
}

date次に、配列の値をキーで並べ替える必要があります。

function sortByDate($a,$b) {
    $d1 = strtotime($a['date']);
    $d2 = strtotime($b['date']);
    return $d1 == $d2 ? 0 : ($d1 > $d2 ? 1 : -1);
}
usort($allItems,'sortByDate');
// and there you go.
print_r($allItems);
于 2013-01-08T13:59:25.390 に答える