2016-12-19 41 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++; 
}