Többdimenziós asszociatív tömb rendezése érték alapján PHP-ben

Megosztás az iWiW-en

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:

array
(
  [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:

function cmp( $a, $b ) {
  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:
  • ne írj trágár, vagy közízlést sértő szavakat
  • ne sértsd meg mások személyiségi jogait
  • ne buzdíts senkit a törvény megsértésére
  • legyél türelmes és előzékeny
Előre megköszönöm, hogy ha hozzászólsz, akkor a fentieket tiszteletben tartod.

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...

Itt lehet hozzászólni!