2017-06-20 63 views
0

我正在寻找一个解决方案,通过键排序多维数组,重点是我可以排序一组数组的多维,没有自定义键ID和数组是集,但这个数组包含自定义键,我需要按日期排序:按键排列多维数组

我的数组是:

$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将整理仅多维数组,所以在我的情况是错误的,因为我没有结构使用它,有没有办法通过按键顺序排序?我的意思是由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'  
     ) 
    ) 
    ) 
    ); 
+0

是http://php.net/manual/en/function.array-multisort.php你在找什么? –

+0

你好@GisoStallenberg我正在寻找按日期排序ASC从数据库中我有一个联盟所有给我第一次和第二次,并按日期预先排序asc但根本没有,我做了一个foreach和按日期分组并且我创建了一组新的数组,但是正如您所看到的,日期不是由ASC排序的。 Thx – ndAR

+1

好的,对我而言,预期结果会是什么非常不明确。你可以添加预期的结果吗? –

回答

3

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

ksort($newDataSet); 
print_r($newDataSet); 
+0

我已经试过这种方式,但was'n工作,我不明白为什么,也许我在我的查询中有错误,但现在是好的,排序正确。谢谢 – ndAR