2017-02-28 112 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