根据 laravel 5.1 中的索引排序或 collection 或数组
Sorting or collection or array according to index in laravel 5.1
我在 laravel 中有以下 collection:
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 的排序 collection 方法,还尝试了 php 的 ksort 函数将 collection 转换为数组。但它把它当作一个字符串。
如果您使用的是数组,那么您可以使用带有回调函数的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
)
我在 laravel 中有以下 collection:
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 的排序 collection 方法,还尝试了 php 的 ksort 函数将 collection 转换为数组。但它把它当作一个字符串。
如果您使用的是数组,那么您可以使用带有回调函数的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
)