2017-02-28 6 views
1

Ich habe dieses mehrdimensionale Array, und ich möchte jedes Array von 'Fecha' bestellen (ich meine 2017-02-20, dann 2017-02-21, dann 2017-02-22 und schließlich 2017 -02-23). Ich habe viele Antworten gelesen, aber sie funktionieren nur mit zweidimensionalen Arrays. Ich habe es mit unsort und array_multisort versucht, auch mit ksort bue konnte ich das Wunschergebnis nicht erreichen.Sortieren nach Schlüssel-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 
        ) 

      ) 

    ) 

Antwort

2

können Sie usort mit strtotime verwenden nach Datum zu bestellen.

ASC Sortiert nach Datum (fecha):

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

print_r($yourArray); 

DESC Sortiert nach Datum (fecha):

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

print_r($yourArray); 
1

Versuchen:

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