Сортировка ассоциативного массива (PHP)

harutx
На сайте с 13.08.2007
Offline
128
5074

Нужна Ваша помощь уважаемые форумчане!

Есть массив:

$aaa[1]['id'] = "...";

$aaa[1]['page'] = "...";
$aaa[1]['year'] = "...";

$aaa[2]['id'] = "...";
$aaa[2]['page'] = "...";
$aaa[2]['year'] = "...";

... и т.д.

как можно отсортировать данный массив например по возрастанию year ?

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#1

Используйте функцию usort.

Она принимает два параметра - сам массив, и имя функции, с помощью которой сравниваются элементы.

В вашем случае примерно так будет:

function aaa_compare($a, $b) {
return $a['year'] - $b['year'];
}

usort($aaa, 'aaa_compare');
bondarevpipes.com (http://ru.bondarevpipes.com/)
Николай В.
На сайте с 07.09.2006
Offline
62
#2


function array_key_multi_sort($arr, $l , $f='strnatcasecmp')
{
usort($arr, create_function('$a, $b', "return $f(\$a['$l'], \$b['$l']);"));
return($arr);
}

$aaa[1]['id'] = "1";
$aaa[1]['page'] = "тест";
$aaa[1]['year'] = "1998";

$aaa[2]['id'] = "2";
$aaa[2]['page'] = "тест2";
$aaa[2]['year'] = "1997";

$aaa[3]['id'] = "3";
$aaa[3]['page'] = "тест3";
$aaa[3]['year'] = "1999";

$sort = array_key_multi_sort($aaa, 'year');
print_r($sort);
harutx
На сайте с 13.08.2007
Offline
128
#3
bondarev.pp.ru:
Она принимает два параметра - сам массив, и имя функции, с помощью которой сравниваются элементы.

а я не знал об этом... век живи , век учись!

Николай В., bondarev.pp.ru все ок, все получилось... Спасибо Вам за помощь :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий