array_multisort $ FILES数组

我有一个数组,该数组是文件上传输入的结果。 数组$ FILES看起来像这样:

[name]

我希望整个数组按名称排序。在此示例中, 20180131023722.JPG 排序后的索引应为0。其他值也应相应排序。

array_multisort应该被使用,但是我不知道如何。

hanpangzi2234 回答:array_multisort $ FILES数组

使用这种结构对数组进行排序非常困难。转置数组易于排序。数组将具有以下结构:

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);
本文链接:https://www.f2er.com/3143703.html

大家都在问