2017-02-28 148 views
1

我有這個多維數組,我想用'fecha'命令每個數組(我的意思是2017-02-20,然後是2017-02-21,然後是2017-02-22,最後是2017 -02-23)。我已經閱讀了很多答案,但它們只能用於二維數組。我嘗試過使用unsort和array_multisort,即使使用kso​​rt bue我也無法獲得期望的結果。order by key array multidimensional

Array 
    (
     [0.10] => Array 
      (
       [0] => Array 
        (
         [fecha] => 2017-02-21 
         [tarifa] => 743.80 
         [percent] => 0.10 
        ) 

       [1] => Array 
        (
         [fecha] => 2017-02-22 
         [tarifa] => 743.80 
         [percent] => 0.10 
        ) 

       [2] => Array 
        (
         [fecha] => 2017-02-20 
         [tarifa] => 743.80 
         [percent] => 0 
        ) 

       [3] => Array 
        (
         [fecha] => 2017-02-23 
         [tarifa] => 743.80 
         [percent] => 0 
        ) 

      ) 

     [0.15] => Array 
      (
       [0] => Array 
        (
         [fecha] => 2017-02-21 
         [tarifa] => 743.80 
         [percent] => 0.15 
        ) 

       [1] => Array 
        (
         [fecha] => 2017-02-22 
         [tarifa] => 743.80 
         [percent] => 0.15 
        ) 

       [2] => Array 
        (
         [fecha] => 2017-02-20 
         [tarifa] => 743.80 
         [percent] => 0 
        ) 

       [3] => Array 
        (
         [fecha] => 2017-02-23 
         [tarifa] => 743.80 
         [percent] => 0 
        ) 

      ) 

    ) 

回答

2

可以使用usortstrtotime按日期排序。按日期(日期星)

ASC秩序:日期(日期星)

foreach ($yourArray as $key => $subarray) { 
    usort($subarray, function($a, $b) { 
      return strtotime($a['fecha']) - strtotime($b['fecha']); 
     }); 
    $yourArray[$key] = $subarray; 
} 

print_r($yourArray); 

DESC順序:

foreach ($yourArray as $key => $subarray) { 
    usort($subarray, function($a, $b) { 
      return strtotime($b['fecha']) - strtotime($a['fecha']); 
     }); 
    $yourArray[$key] = $subarray; 
} 

print_r($yourArray); 
1

嘗試:

foreach ($yourArray as $key => &$subarray) { 
     usort($subarray, function($a, $b) { 
      return $a['fecha'] <= $b['fecha']; 
     }); 
    } 
    print_r($yourArray); //now it's sorted