sorteer functies user defined zijn (uasort(), uksort() en usort()), waarbij je met een
comparison je eigen sorteer functie kan maken/bepalen.
Echter snap ik dit niet helemaal hoe dit in werking gaat. Wat gebeurt er achter
de schermen. Om het te proberen te snappen ben ik met een voorbeeld bezig.
Stel ik heb de volgende array
$array = array(
"c" => "ccc",
"t" => "aaa",
"k" => "bbb",
"p" => "differnt",
"u" => "www"
);
Dan wil ik bijvoorbeeld dat (ccc, aaa, bbb en www) of alfabet gezet worden en als laatste
moet differnt worden weergegeven.
Ik heb nu het volgende gedaan
function comparison($a, $b)
{
if($a == $b) {return 0;}
if(strpos($a, "differnt") === false) { return -1; }
if(strpos($b, "differnt") === false) { return 1; }
return ($a < $b) ? -1 : 1;
}
uasort($array, 'comparison');
// uitkomst na print
ARRAY NEW Array
(
[c] => ccc
[t] => aaa
[k] => bbb
[u] => www
[p] => differnt
)
// Gewenste uitkomst
ARRAY GEWENST Array
(
[t] => aaa
[k] => bbb
[c] => ccc
[u] => www
[p] => differnt
)
Ik snap dus niet helemaal hoe dit werkt.
Ik heb ondertussen de oplossing gevonden
function comparison($a, $b)
{
if($a == $b) {return 0;}
if(strpos($a, "differnt") !== false) { return 1; }
if(strpos($b, "differnt") !== false) { return -1; }
return ($a < $b) ? -1 : 1;
}
// uitkomst
[t] => aaa
[k] => bbb
[c] => ccc
[u] => www
[p] => differnt
Ik ben er achter dat het kleiner dan < en groter dan > staan voor de
volgorde van sorteren. Alleen nu snap ik de 1 en -1 niet.