Nem kell megijedni, a feladat megoldása sokkal egyszerűbb, mint ahogy a címből gondolnánk. Mivel több féle, bonyolultabbnál bonyolultabb megoldás is kering a neten, úgy gondoltam, hogy leírom azt, amelyiket a legegyszerűbbnek találtam erre a feladatra.
A probléma
Van egy többdimenziós asszociatív tömbünk és ezt szeretnénk a benne lévő értékek valamelyike alapján sorba rendezni. A tömbünk így néz ki:
(
[0] => array
(
[gyarto] => Audi
[evjarat] => 2001
[km] => 189230
)
[1] => array
(
[gyarto] => Mercedes
[evjarat] => 2004
[km] => 176850
)
[2] => array
(
[gyarto] => BMW
[evjarat] => 2003
[km] => 246400
)
)
A fenti tömb index szerinti sorbarendezésére van gyári PHP függvény, azonban ha mondjuk évjárat alapján szeretnénk megcsinálni a sorbarendezést, akkor arra valami más megoldást kell találnunk.
A megoldás
Létrehozunk egy saját kis függvényt – az alábbi példában a cmp() – majd annak segítségével rendezzük a tömbünk elemeit, valahogy így:
return strcmp( $a[“evjarat”], $b[“evjarat”] );
}
usort( $tomb, “cmp” );
Ha pedig fordított sorrendet szeretnénk, akkor az itt leírt megoldás után egyszerűen csak használjuk az array_reverse() függvényt.
A fenti példa megtalálható a PHP dokumentációjában is.
Mielőtt hozzászólnál...
Egy hozzászólás megírásakor kérlek, hogy vedd figyelembe a következőket:
Ha esetleg nem találnád a hozzászólásod a többi között, akkor gondolj arra, hogy az azért van, mert valószínű, hogy a fenti pontokat nem vetted figyelembe...