按文件名排序 $_FILES


Sort $_FILES by filename

伙计们,如您所知,在新的HTML5中,您可以非常轻松地上传多个文件。但是我在这里的问题是如何按"名称"列对 $_FILES 数组进行排序?下面是 $_FILES 的示例数组

 Array (
[item_file] => Array (
    [name] => Array (
        [0] => redphotonzillion1.jpg
        [1] => redphotonzillion2.jpg
        [2] => redphotonzillion3.jpg
        [3] => redphotonzillion4.jpg
        [4] => redphotonzillion5.jpg
        [5] => redphotonzillion6.jpg
    )
    [type] => Array (
        [0] => image/jpeg
        [1] => image/jpeg
        [2] => image/jpeg
        [3] => image/jpeg
        [4] => image/jpeg
        [5] => image/jpeg
    )
    [tmp_name] => Array (
        [0] => /var/www/clients/client0/web6/tmp/phpi4i5fE
        [1] => /var/www/clients/client0/web6/tmp/phpzHwagk
        [2] => /var/www/clients/client0/web6/tmp/phpYpAgg0
        [3] => /var/www/clients/client0/web6/tmp/phpAIdngG
        [4] => /var/www/clients/client0/web6/tmp/phpyamugm
        [5] => /var/www/clients/client0/web6/tmp/phpFvWBg2
    )
    [error] => Array (
        [0] => 0
        [1] => 0
        [2] => 0
        [3] => 0
        [4] => 0
        [5] => 0
    )
    [size] => Array (
        [0] => 7990
        [1] => 8985
        [2] => 8014
        [3] => 7621
        [4] => 7023
        [5] => 7151
    )
)

我想要的只是按名称对这个数组进行排序

对于这种特定情况,PHP 提供了正确的函数: array_multisort()

它可以对多维数组(或多个平面数组)进行排序,方法是首先对第一个数组进行排序,然后将结果顺序应用于所有其他数组(有关示例,请参阅文档)。

array_multisort(
  // Array used to sort + optional parameters
  $_FILES['item_file']['name'], SORT_ASC, SORT_STRING
  // All other arrays to be sorted in the same order
  $_FILES['item_file']['type'],
  $_FILES['item_file']['tmp_name'],
  $_FILES['item_file']['error'],
  $_FILES['item_file']['size']
);

这个 aproach 将保留分配给name文件相应索引的所有元信息(typetmp_nameerrorsize),

以便可以使用。