2013-03-22 2 views
-1

У меня есть массив, который создается так:сортировать массив массивов в PHP

$i = 0; 

$files = array(); 

while ($file = mysql_fetch_array($query_files)) { 
    $files[$i] = array(); 
    $files[$i] = $file; 
    $i++; 
} 

И мне нужно, чтобы иметь возможность сортировать массив $ файлов на основе каждого файла $ [ «имя»] ака $ файлы [$ я] [ 'имя'].

Как это сделать? Спасибо!

+0

вы имеете в виду в алфавитном порядке? – superUntitled

+5

Не было бы проще сделать заказ в SQL ('ORDER BY name')? – Clive

+0

Вы можете отсортировать данные из своего SQL-запроса с помощью «ORDER BY ...» – Superlandero

ответ

8

Добавить ORDER BY NAME на ваш запрос. Шутки в сторону. Это самая быстрая, безопасная память и все вокруг - лучший способ сделать это. Я не шучу. Кроме того, вы должны сообщать базе данных о том, что делать, на что это потрясающе, тогда как в PHP все нормально. Наконец, у вас есть возможность индексировать столбец имен БД, а PHP не предлагает индекса.

Если вы абсолютно должны, то сортируйте его самостоятельно, тогда вам нужно использовать usort.

// this example is almost a clone of something in the docs. 
function cmp($a, $b) 
{ 
    return strcmp($a["name"], $b["name"]); 
} 
usort($files, "cmp"); 
0

выглядит как работа для usort

usort($array, function ($a, $b) { 
    if ($a['name'] == $b['name']) { 
     return 0; 
    } 
    return $a['name'] < $b['name'] ? -1 : 1; 
});