Сортировка массива объектов по полю объекта.
19 Ноя 2009
Задача: Отсортировать массив подобной структуры по текстовому полю tagname (в алфавитном порядке):
[0] => stdClass Object
(
[tag_id] => 39
[tagname] => USA
[tagmass] => 1
[count] => 1431
)
[1] => stdClass Object
(
[tag_id] => 151
[tagname] => MySpace Codes
[tagmass] => 1
[count] => 319
)
…
Решение:
<?php
function mySort($f1,$f2)
{
if($f1->tagname < $f2->tagname) return -1;
elseif($f1->tagname > $f2->tagname) return 1;
else return 0;
}
// uasort – сортирует массив, используя пользовательскую функцию mySort
uasort($arr,"mySort");
print_r($arr);
?>
Всё работает, но сортирует в обратном порядке.
Да, действительно, в третьем примере вижу функцию cmp_obj, которая по логике идентична с функцией mySort в моей заметке.
Заодно и будущим читателям помогли ссылкой на более подробный пример. За что и выражаю благодарность. Спасибо за участие.
Я думаю, Вы уже отлично разобрались в этом вопросе.
опечатался так прально
Обратите внимание, что в примере по Вашей ссылке – массивы, а в моём – массив объектов. В том-то и соль – отсортировать именно массив объектов по какому-либо полю, а не просто массив. Может Вы в исходных данных запутались? Ну, раз в том случае работает, то наверное так и есть: на вход подаете обычный массив.
вот так почемуто работает а как тут пишет не правильная функция сравнения
Код рабочий. Разберитесь, почему у Вас не работает.
как бы этот вариант не пашет