Sven Rautenberg: Sortieren eines speziellen Arrays

Beitrag lesen

Moin!

Wie würde denn dann die cmp-Funktion aussehen?! Kannst du mir das villeicht an einem, auf mein Problem bezogenen, Beispiel zeigen?

Das Beispiel für usort() liefert folgende Demo-Vergleichsfunktion:

function cmp ($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}

Das demonstriert eigentlich alles, was du zum Erstellen einer eigenen Funktion wissen mußt:

1. Du kriegst zwei Elemente deines Arrays in den beiden Funktionsparametern, hier $a und $b genannt (die können aber auch anders heißen, wenn du willst).

2. Du sollst als Funktionsergebnis Null zurückgeben, wenn beide Elemente gleich sind, du sollst -1 zurückgeben, wenn $a logisch _vor_ $b einsortiert werden soll, und du sollst 1 zurückgeben, wenn $a _hinter_ $b einsortiert werden soll.

Logischerweise ist die Demo-Funktion sehr simpel.

Deine Aufgabe ist es jetzt, eine Methode zu finden, die den Zahlenwert, der in den Strings drin ist (und der in $a und $b in deine Funktion hineinkommt), zu extrahieren, in eine Zahl umzuwandeln und diese Zahl dann mit dem anderen Wert zu vergleichen.

Mit anderen Worten: Du kannst die Funktion eigentlich 1:1 übernehmen, du mußt vorher lediglich $a und $b so verändern, dass aus dem String ein Zahlenwert wird - der Vergleich selbst ist dann genau so, wie in der Funktion beschrieben.

Also z.B. mit doubleval() http://de3.php.net/manual/de/function.doubleval.php jeweils $a und $b bearbeiten - keine Ahnung, ob das schon reicht. Ansonsten schneidest du mit einer anderen Stringfunktion einfach die ersten Zeichen ab, die keine Zahl sind.

- Sven Rautenberg

--
SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|