2016-12-19 2 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

Я полагаю, вы будете обрабатывать эти файлы в цикле Еогеасп.

Как насчет кода ниже?

//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++; 
} 
Смежные вопросы