2011 m. gegužės 4 d., trečiadienis

PHP: usort funkcija

Situacija: turėjau objektų masyvą, kuris buvo sudarytas jungiant kitus kelis masyvus. Masyvo struktūros pavyzdys:

Array
(
[0] => stdClass Object
(
[start_time] => 2010-10-14 18:00:00
[category_id] => 1
[tournament_id] => 41
[tournament_place] => Vilnius
[ratings] => 0.34
[place] => 145
[title] => Title 1
[photo] => http://myadress.lt/symbol2.jpg
)

[1] => stdClass Object
(
[start_time] => 2010-10-17 12:00:00
[category_id] => 1
[tournament_id] => 50
[tournament_place] => New York
[ratings] => 5.27
[place] => 30
[title] => Title 2
[photo] => http://myadress.lt/symbol.jpg
)

)


Reikėjo: surikiuoti galutinio masyvo elementus pagal datą mažėjimo tvarka (nuo didžiausio iki mažiausio).

Sprendimas: tam naudojama usort() funkcija, tačiau pagal nutylėjimą ji rikiuoja nuo mažiausio iki didžiausio.

function cmp($a, $b)
{
return ($a->tournament_id < $b->tournament_id) ? 1 : -1;
}

usort($result3,'cmp');

Jeigu į rikiavimą nereikėtų atsižvelgti, užtektų tokios funkcijos:

function cmp($a, $b)
{
return strcmp($a->tournament_id, $b->tournament_id);
}

Komentarų nėra:

Rašyti komentarą