簡體   English   中英

array_multisort $FILES 數組

[英]array_multisort $FILES array

我有一個數組,它是文件上傳輸入的結果。 數組 $FILES 如下所示:

 Array (
    [files] => Array
        (
            [name] => Array
                (
                    [0] => 20180131023939.JPG
                    [1] => 20180131024005.JPG
                    [2] => 20180131024027.jpg
                    [3] => 20180131023722.JPG
                    [4] => 20180131023913.JPG
                )

            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                    [2] => image/jpeg
                    [3] => image/jpeg
                    [4] => image/jpeg
                )

            [tmp_name] => Array
                (
                    [0] => /data/sites/web/mersbe/tmp/phpzJ6Avh
                    [1] => /data/sites/web/mersbe/tmp/phpMHduDZ
                    [2] => /data/sites/web/mersbe/tmp/phpiSohMH
                    [3] => /data/sites/web/mersbe/tmp/phpOoAJWp
                    [4] => /data/sites/web/mersbe/tmp/phpdr9n87
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                    [3] => 0
                    [4] => 0
                )

            [size] => Array
                (
                    [0] => 2461635
                    [1] => 402525
                    [2] => 1383589
                    [3] => 1154849
                    [4] => 441203
                )

        )

)

我希望整個數組按名稱排序。 在這個例子中 20180131023722.JPG在排序后應該有 0 的索引。 其他值也應相應排序..

應該使用array_multisort,但我不知道如何..

用這種結構排序 arrays 非常困難。 轉置數組很容易排序。 然后數組具有以下結構:

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', '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,0,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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM