按数组

时间:2017-06-20 14:52:48

标签: php arrays sorting multidimensional-array

我正在寻找一个按键排序多维数组的解决方案,重点是我可以对一组具有多维的数组进行排序,该数组没有自定义键ID且数组在set中,但此数组包含自定义键,我需要按日期排序:

我的数组是:

$newDataSet = array(
 '2017-02-03' => array(
  array(
    array(
     'name' => 'Paul',
     'state' => 'in',
     'date' => '2017-02-03'    
    ),
    array(
     'name' => 'Paul',
     'state' => 'out',
     'date' => '2017-02-03'    
    )
  )
 ),
'2017-01-02' => array(
  array(
    array(
     'name' => 'John',
     'state' => 'in',
     'date' => '2017-01-02'    
    ),
    array(
     'name' => 'John',
     'state' => 'out',
     'date' => '2017-01-02'    
    )
  )
 ),
'2017-04-01' => array(
  array(
    array(
     'name' => 'Smith',
     'state' => 'in',
     'date' => '2017-04-01'    
    ),
    array(
     'name' => 'Smith',
     'state' => 'out',
     'date' => '2017-04-01'    
    )
  )
 )
);

uasort($newDataSet, function($a, $b) { return($a['date'] - $b['date']); });

据我所知,usort只会对多维数组进行排序,所以在我的情况下是错误的,因为我没有使用它的结构,有没有办法按键asc排序?我的意思是date asc?

感谢您提供更好理解的任何提示/文档。

预期结果:

$newDataSet = array(
     '2017-01-02' => array(
      array(
        array(
         'name' => 'Paul',
         'state' => 'in',
         'date' => '2017-01-02'    
        ),
        array(
         'name' => 'Paul',
         'state' => 'out',
         'date' => '2017-01-02'    
        )
      )
     ),
    '2017-02-03' => array(
      array(
        array(
         'name' => 'John',
         'state' => 'in',
         'date' => '2017-02-03'    
        ),
        array(
         'name' => 'John',
         'state' => 'out',
         'date' => '2017-02-03'    
        )
      )
     ),
    '2017-04-01' => array(
      array(
        array(
         'name' => 'Smith',
         'state' => 'in',
         'date' => '2017-04-01'    
        ),
        array(
         'name' => 'Smith',
         'state' => 'out',
         'date' => '2017-04-01'    
        )
      )
     )
    );

1 个答案:

答案 0 :(得分:3)

你可以使用kso​​rt(),live demo

ksort($newDataSet);
print_r($newDataSet);
相关问题