2016-05-18 36 views
1

集合或數組我有laravel以下集合:排序或者根據指數laravel 5.1

Collection {#357 ▼ 
    #items: array:11 [▼ 
    "29-04-2016" => array:2 [▼ 
     "posTotal" => "100" 
     "posCount" => 1 
    ] 
    "05-05-2016" => array:6 [▼ 
     "posTotal" => "11" 
     "posCount" => 1 
     "keyedTotal" => "120" 
     "keyedCount" => 1 
     "cashTotal" => "32" 
     "cashCount" => 2 
    ] 
    "10-05-2016" => array:10 [▼ 
     "posTotal" => "67" 
     "posCount" => 4 
     "keyedTotal" => "22" 
     "keyedCount" => 1 
     "cashcardTotal" => "123" 
     "cashcardCount" => 1 
     "refundTotal" => "-50" 
     "refundCount" => 1 
     "cashRefundTotal" => "-10" 
     "cashRefundCount" => 1 
    ] 
    "17-05-2016" => array:2 [▶] 
    "06-05-2016" => array:2 [▶] 
    "16-05-2016" => array:2 [▶] 
    "22-04-2016" => array:2 [▶] 
    "25-04-2016" => array:2 [▶] 
    ] 
} 

現在我希望通過指數進行排序,但需要將其轉換爲每日期。

例如,我想表現

"17-05-2016" => array:2 [▶] 
"10-05-2016" => array:10 [▶] 
"06-05-2016" => array:2 [▶] 

等等...

我已經試過laravel的排序收集方法也試過PHP的ksort功能轉換集合陣列。但它把它當作一個字符串。

回答

1

如果你正在使用數組,那麼你可以使用帶回調函數的uksort()。你可以在其中編寫自己的條件。

PHP代碼:

// callback function 
function cmp($a, $b){ 
    if(strrev($a) == strrev($b)){ 
     return 1; 
    } 
    return (strrev($a) < strrev($b)) ? -1 : 1; 
} 

// semple array 
$test = array(
    "05-06-2015" => "1", 
    "07-06-2016" => "3", 
    "05-08-2016" => "4", 
    "05-06-2016" => "2"  
); 

uksort($test, "cmp"); 

echo "<pre>"; 
print_r($test); 

輸出:

Array 
(
    [05-06-2015] => 1 
    [05-06-2016] => 2 
    [07-06-2016] => 3 
    [05-08-2016] => 4 
) 
+1

謝謝@Rohit它的工作原理我更改爲每laravel ' uksort($測試,功能($ A,$ B ){ if(strrev($ a)== strrev($ b)){ return 1; } return(strrev($ a)<-1); -1: } );' –