我有一个数组,该数组是文件上传输入的结果。 数组$ FILES看起来像这样:
[name]
我希望整个数组按名称排序。在此示例中, 20180131023722.JPG 排序后的索引应为0。其他值也应相应排序。
array_multisort应该被使用,但是我不知道如何。
我有一个数组,该数组是文件上传输入的结果。 数组$ FILES看起来像这样:
[name]
我希望整个数组按名称排序。在此示例中, 20180131023722.JPG 排序后的索引应为0。其他值也应相应排序。
array_multisort应该被使用,但是我不知道如何。
使用这种结构对数组进行排序非常困难。转置数组易于排序。数组将具有以下结构:
array (
0 =>
array (
'name' => "20180131023939.JPG",'type' => "image/jpeg",'tmp_name' => "/data/sites/web/mersbe/tmp/phpzJ6Avh",'error' => 0,'size' => 2461635,),1 =>
array (..
排序后,如果需要原始结构,可以再次进行转位。
function array_transpose(array $array) {
$newArr = [];
foreach($array as $keyRow => $subArr) {
foreach($subArr as $keyCol => $value) $newArr[$keyCol][$keyRow] = $value;
}
return $newArr;
}
//test data
$files = [
'name' => ['20180131023939.JPG','20180131024005.JPG','20180131024027.jpg','20180131023722.JPG','20180131023913.JPG'],'type' => ['image/jpeg','image/jpeg','image/jpeg'],'tmp_name' => ['/data/sites/web/mersbe/tmp/phpzJ6Avh','/data/sites/web/mersbe/tmp/phpMHduDZ','/data/sites/web/mersbe/tmp/phpiSohMH','/data/sites/web/mersbe/tmp/phpOoAJWp','/data/sites/web/mersbe/tmp/phpdr9n87'],'error' => [0,0],'size' => [2461635,402525,1383589,1154849,441203]
];
$arr = array_transpose($files);
//sort by name asc
usort($arr,function($a,$b){return $a['name'] <=> $b['name'];});
//transpose back
$files = array_transpose($arr);