2016-12-19 43 views
0

通过HTTP上传图像时,我得到以下数组。如何按降序排列图像的大小来排序它们,所以最大尺寸的图像将会上传到最后一个尺寸的图像上,而最小尺寸的图像会上传到上面?按大小值对多维数组排序

Array 
(
    "name" => Array 
     (
      [0] => 1.jpg 
      [1] => 2.jpg 
      [2] => 3.jpg 
     ) 

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

    ["tmp_name"] => Array 
     (
      [0] => e7d31fc0 
      [1] => qsdf0sdf 
      [2] => s0sdfsfs 
     ) 

    ["error"] => Array 
     (
      [0] => 0 
      [1] => 0 
      [2] => 0 
     ) 

    ["size"] => Array 
     (
      [0] => 20000 
      [1] => 30000 
      [2] => 40000 
     ) 
) 

其结果是,输出应该如下:

Array 
(
    "name" => Array 
     (
      [0] => 3.jpg 
      [1] => 2.jpg 
      [2] => 1.jpg 
     ) 

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

    ["tmp_name"] => Array 
     (
      [0] => s0sdfsfs 
      [1] => qsdf0sdf 
      [2] => e7d31fc0 
     ) 

    ["error"] => Array 
     (
      [0] => 0 
      [1] => 0 
      [2] => 0 
     ) 

    ["size"] => Array 
     (
      [0] => 40000 
      [1] => 30000 
      [2] => 20000 
     ) 
) 
+0

我认为从'$ _FILES'的?通常意义上的文件已经上传了... – Darren

+0

是的。它已经上传但不会移动到我的目录中 – Ulugbek

回答

1

我想,你会处理在foreach循环中的那些文件。

下面的代码如何?

//get files in array 
$files = $_FILES['formFieldName']; 
$sizes = $files['size']; 
arsort($sizes); //sort in descending order but will preserve the keys 
foreach ($sizes as $key => $size) { 
    $fileName = $files['name'][$key]; 
    $fileSize = $size; 
    $fileType = $files['type'][$key]; 
    $fileTmpName = $files['tmp_name'][$key]; 
    $fileError = $files['error'][$key]; 
} 
0

基于塞利姆·马哈茂德的回答,我解决了解决方案:

$files = $_FILES['formFieldName']; 
$sizes = $files['size']; 
arsort($sizes); //sort in descending order but will preserve the keys 
$files2 = array(); 
$i = 0; 
foreach ($sizes as $key => $size) { 
    $files2['name'][$i] = $files['name'][$key]; 
    $files2['type'][$i] = $files['type'][$key]; 
    $files2['tmp_name'][$i] = $files['tmp_name'][$key]; 
    $files2['error'][$i] = $files['error'][$key]; 
    $files2['size'][$i] = $size; 
    $i++; 
}