PHP tömb usort() uasort() uksort() rendezés.


Mindegyik a felhasználó által definiált,
összehasonlító függvény segítségével rendez.

usort()Értékek szerint rendezi a tömböt, újra indexeléssel.
uasort()Értékek szerint rendezi a tömböt, és fenntartja az indextársítást.
Visszatérési érték:	Mindig IGAZ értéket ad vissza.
PHP verzió:	4+
PHP változásnapló:
PHP 8.2.0: Most TRUE-t ad vissza (korábban bool-t adott vissza)
PHP 8.0.0: Ha a visszahívás azt várja, hogy egy paramétert referenciaként adnak át,
     akkor most egy E_WARNING-et ad vissza.
uksort()Index, azaz, kulcsok szerint rendezi a tömböt


A feltételes hármas: ($a < $b) ? -1 : 1;
A ( ? : ) operátor esetén, a kérdőjel előtt egy logikai kifejezés szerepel.
Ha a kiértékelés eredménye igaz,
akkor a kérdőjel "?" és a ":" kettőspont közötti értéket adja vissza az operátor,
ellenkező esetben a ":" kettőspont utáni értéket.



usort()

Értékek szerint rendezze a tömböt, újra indexeléssel.
A felhasználó által definiált összehasonlító függvény segítségével.
Meghatározási sorrend, lehet így: return ($a < $b) vagy így: return ($a > $b)

<?php
function value_sort($a, $b) {
  if ($a == $b) return 0;
  return ($a < $b) ? -1 : 1;
}
$adat[0]=4;
$adat[1]=2;
$adat[2]=8;
$adat[3]=6;

$tombrehossz=count($adat);
echo "Rendezés előtt, tömb hossza = ".$tombrehossz."<br><br>";

usort($adat,"value_sort");

foreach($adat as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}

  echo "<br><br>";
$tombruhossz=count($adat);
echo "Rendezés után, tömb hossza = ".$tombruhossz."<br>";
?>






Rendezés előtt, tömb hossza = 4

[0] => 2
[1] => 4
[2] => 6
[3] => 8


Rendezés után, tömb hossza = 4


uasort()

Rendezze egy tömb elemeit értékek szerint úgy, hogy fenntartja az indextársítást.
egy felhasználó által definiált összehasonlító függvény segítségével (és fenntartja az indextársítást).
Meghatározási sorrend, lehet így: return ($a < $b) vagy így: return ($a > $b)

<?php
function valueindex_sort($a, $b) {
  if ($a == $b) return 0;
  return ($a < $b) ? -1 : 1;
}

$num["a"]=4;
$num["b"]=2;
$num["c"]=8;
$num["d"]=6;

uasort($num, "valueindex_sort");

foreach($num as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>"; 
}
?> 





[b] => 2
[a] => 4
[d] => 6
[c] => 8

uksort()

Rendezze egy tömb elemeit, kulcsok szerint.
A felhasználó által definiált összehasonlító függvény segítségével.
Meghatározási sorrend, lehet így: return ($a < $b) vagy így: return ($a > $b)

<?php
function key_sort($a, $b) {
  if ($a == $b) return 0;
  return ($a < $b) ? -1 : 1;
}

$tomb["cukor"]=8;
$tomb["dinnye"]=6;
$tomb["alma"]=4;
$tomb["bab"]=2;

uksort($tomb, "key_sort");

foreach($tomb as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}
?> 






[alma] => 4
[bab] => 2
[cukor] => 8
[dinnye] => 6



Szöveges tömb, tesztelése.

Megjegyzés:
Teszteléshez az első négynek, nagyobb index értéket határozunk meg.

<table class="leirastabla">
<tr>
<td><br>usort()<br><br>
<?php
function string_sort($a, $b) {
  if ($a == $b) return 0;
  return ($a < $b) ? -1 : 1;
}
 // ----------------------------------
$szavak[50] = 'Öv Szíj';
$szavak[51] = 'öv szíj';
$szavak[52] = 'Őrző Védő';
$szavak[53] = 'őrző védő';
$szavak[4] = 'Üveg Törött';
$szavak[5] = 'üveg törött';
$szavak[6] = 'Űz Tűz';
$szavak[7] = 'űz tüz';
$szavak[8] = 'Út Kátyú';
$szavak[9] = 'út kátyú';
$szavak[10] = 'Ír Gépel';
$szavak[11] = 'ír gépel';
$szavak[12] = 'Óval Írd';
$szavak[13] = 'óval írd';
$szavak[14] = 'Évek Idők';
$szavak[15] = 'évek idők';
$szavak[16] = 'Álom Vágy';
$szavak[17] = 'álom vágy';
$szavak[18] = 'Alom Fészek';
$szavak[19] = 'alom fészek';
$szavak[20] = 'Igaz Hamis';
$szavak[21] = 'igaz hamis';
$szavak[22] = 'igáz gáz';
$szavak[23] = 'igér bátor';
$szavak[24] = 'őrzi védi';
$szavak[25] = 'öröm károm';
$szavak[26] = 'örökre soha';
$szavak[27] = 'tömlő cső';
$szavak[28] = 'teve pupos';
$szavak[29] = 'ömlő áradó';
$szavak[30] = 'ööö ők';
$szavak[31] = 'Bátor Merész';
$szavak[32] = 'Fürész Balta';
$szavak[33] = 'Bába Szülész';
 // ----------------------------------
$Aszavak=$szavak;
$Bszavak=$szavak;
$Cszavak=$szavak;
 // ----------------------------------
usort($Aszavak,"string_sort");
foreach($Aszavak as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}
  echo "</td><td><br>uasort()<br>";

uasort($Bszavak, "string_sort");
foreach($Bszavak as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}
  echo "</td><td><br>uksort()<br>";
  
uksort($Cszavak, "string_sort");
foreach($Cszavak as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}

?>

</td></tr>
</table>




Rendez, és
újra indexel.

usort()

[0] => Alom Fészek
[1] => Bába Szülész
[2] => Bátor Merész
[3] => Fürész Balta
[4] => Igaz Hamis
[5] => alom fészek
[6] => igaz hamis
[7] => igáz gáz
[8] => igér bátor
[9] => teve pupos
[10] => tömlő cső
[11] => Álom Vágy
[12] => Évek Idők
[13] => Ír Gépel
[14] => Óval Írd
[15] => Öv Szíj
[16] => Út Kátyú
[17] => Üveg Törött
[18] => álom vágy
[19] => évek idők
[20] => ír gépel
[21] => óval írd
[22] => ömlő áradó
[23] => örökre soha
[24] => öröm károm
[25] => öv szíj
[26] => ööö ők
[27] => út kátyú
[28] => üveg törött
[29] => Őrző Védő
[30] => őrzi védi
[31] => őrző védő
[32] => Űz Tűz
[33] => űz tüz




Rendez, index
megtarásával.

uasort()

[18] => Alom Fészek
[33] => Bába Szülész
[31] => Bátor Merész
[32] => Fürész Balta
[20] => Igaz Hamis
[19] => alom fészek
[21] => igaz hamis
[22] => igáz gáz
[23] => igér bátor
[28] => teve pupos
[27] => tömlő cső
[16] => Álom Vágy
[14] => Évek Idők
[10] => Ír Gépel
[12] => Óval Írd
[50] => Öv Szíj
[8] => Út Kátyú
[4] => Üveg Törött
[17] => álom vágy
[15] => évek idők
[11] => ír gépel
[13] => óval írd
[29] => ömlő áradó
[26] => örökre soha
[25] => öröm károm
[51] => öv szíj
[30] => ööö ők
[9] => út kátyú
[5] => üveg törött
[52] => Őrző Védő
[24] => őrzi védi
[53] => őrző védő
[6] => Űz Tűz
[7] => űz tüz




Rendez, index
szerint.

uksort()

[4] => Üveg Törött
[5] => üveg törött
[6] => Űz Tűz
[7] => űz tüz
[8] => Út Kátyú
[9] => út kátyú
[10] => Ír Gépel
[11] => ír gépel
[12] => Óval Írd
[13] => óval írd
[14] => Évek Idők
[15] => évek idők
[16] => Álom Vágy
[17] => álom vágy
[18] => Alom Fészek
[19] => alom fészek
[20] => Igaz Hamis
[21] => igaz hamis
[22] => igáz gáz
[23] => igér bátor
[24] => őrzi védi
[25] => öröm károm
[26] => örökre soha
[27] => tömlő cső
[28] => teve pupos
[29] => ömlő áradó
[30] => ööö ők
[31] => Bátor Merész
[32] => Fürész Balta
[33] => Bába Szülész
[50] => Öv Szíj
[51] => öv szíj
[52] => Őrző Védő
[53] => őrző védő



Nem rendezett tömb, tesztelése.

<table class="leirastabla">
<tr>
<td><br>usort()<br><br>
<?php
function vegyes_sort($a, $b) {
  if ($a == $b) return 0;
  return ($a < $b) ? -1 : 1;
}
 // ----------------------------------
$nrtomb["cukor"]=18;
$nrtomb["dinnye"]=16;
$nrtomb["alma"]=14;
$nrtomb["bab"]=12;
$nrtomb[0]=9;
$nrtomb[3]=17;
$nrtomb[1]=15;
$nrtomb[2]=10;
$nrtomb[10]=4;
$nrtomb[12]=8;
$nrtomb[21]=2;
$nrtomb[23]=6;
$nrtomb["d"]=3;
$nrtomb["b"]=5;
$nrtomb["c"]=7;
$nrtomb["a"]=1;
 // ----------------------------------
$Atomb=$nrtomb;
$Btomb=$nrtomb;
$Ctomb=$nrtomb;
 // ----------------------------------
usort($Atomb,"vegyes_sort");
foreach($Atomb as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}
  echo "</td><td><br>uasort()<br>";

uasort($Btomb, "vegyes_sort");
foreach($Btomb as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";
}
  echo "</td><td><br>uksort()<br>";
  
uksort($Ctomb, "vegyes_sort");
foreach($Ctomb as $key => $value) {
  echo "[" . $key . "] => " . $value ."<br>";;
}

?>

</td></tr>
</table>








usort()

[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 12
[11] => 14
[12] => 15
[13] => 16
[14] => 17
[15] => 18








uasort()

[a] => 1
[21] => 2
[d] => 3
[10] => 4
[b] => 5
[23] => 6
[c] => 7
[12] => 8
[0] => 9
[2] => 10
[bab] => 12
[alma] => 14
[1] => 15
[dinnye] => 16
[3] => 17
[cukor] => 18








uksort()

[0] => 9
[1] => 15
[2] => 10
[3] => 17
[10] => 4
[12] => 8
[21] => 2
[23] => 6
[a] => 1
[alma] => 14
[b] => 5
[bab] => 12
[c] => 7
[cukor] => 18
[d] => 3
[dinnye] => 16