2016-05-18 2 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 и функция 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 ($ тест, функции ($ а, $ Ь) { if (strrev ($ a) == strrev ($ b)) { return 1; } return (strrev ($ a)

Смежные вопросы