Tom: Zwei Array,s zu einem

Beitrag lesen

Hello Fiffi,

Dein Vorschlag hat mich etwas verwirrt:

War zu erwarten. Ich kenne keinen, der nicht verwirrt war von der "Callback-Funktion", als er sie das allererste Mal vorgesetzt bekommen hat.

Nun brauchst Du nur eine Vergleichsfunktion dafür festzulegen, die als Ergebniss hat für
    A > B -> 1,
    A < B -> -1,
    A == B -> 0,

Ich bitte um Verständnis, wenn ich nicht so gut in Mathe oder Logik bin.
Verstanden habe ich das so:
wenn: A > B dann 1,
sonst: A < B dann -1,
sonst: A == B dann 0,

Genau so ist es gemeint. So steht es nämlich im Manual.

Aber  wie mache ich da eine Funktion draus ? usort aus dem Manual hatte ich auch schon in anderen scripten von mir angewendet. Aber da hatte ich nur Zwei Bedingungen.

function result_cmp($_a, $_b)
{
    if ($_a['punkte'] > $_b['punkte']) return 1;   ## A ist > als B

if ($_a['punkte'] == $_b['punkte'])
    {
        if ($_a['anzahl'] > $_b['anzahl']) return 1;  ## A ist > als B
        if ($_a['anzahl'] == $_b['anzahl']) return 0; ## A ist == B
        return -1;                                    ## A ist < als B
    }

return -1;                                        ## Es bleibt bur, dass A < B sein muss
}

Das ist jetzt keine saubere Strukturierte Programmierung nach Nassi Shniderman,
http://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm
denn da fehlen die expliziten ELSE-Zweige. Aber Du kannst sie hoffentlich sofort lesen und verstehen in dieser verkürzten Schreibweise.

Die Funktion lässt sich auch noch weiter zusammanfassen. Aber das kannst Du mal selber versuchen.

Nun kannst Du diese Funktion in usort() http://www.php.net/manual/en/function.usort.php benutzen und hoffen, dass sie funktioniert ;-)

Für die Produktivumgebung müsste man außerdem noch sicherstellen, dass das zu prüfende Array das passende Format hat. Das könnte man in diese Funktion verlagern, oder besser eine eigenständige Prüfung vornehmen, bevor der Vergleich gestartet wird.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de