2017-06-20 64 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