Hi,
ich habe einen zweidimensional Array, den ich nach Feld [3] sortieren möchte, mit dem niedrigsten Preis zuerst. Das Problem ist, dass der Array zwangsläufig schon in der formatierten Form (also mit EURO-Währungssymbol €) und Dezimalkomma statt Dezimalpunkt vorliegt.
Beispiel:
€ 0,80
€ 1,25
€ 0,76
(also stets EURO-Währungssymbol €, dann ein Leerzeichen, dann die Ziffern mit Dezimalkomma)
Die Funktion, um den Array $filteredresults zu sortieren, habe ich schon.
Funktioniert ja leider nicht vernünftig, wenn ich die Werte in der
aktuellen Form lasse (€ 0,80). Also hoffe ich dass ihr mir helfen könnt,
eine Regex und schöne Lösung zu finden, um das Problem zu lösen.
Regex: Alles ausser Ziffern entfernen und Komma durch Punkt ersetzen.
Am schönsten wäre es natürlich, wenn die Regex direkt in der compare function
eingebaut werden könnte, also bspw.
if (ereg_replace('','',$x[3]) == ereg_replace('','',$y[3])
) {return 0;}
Hier nochmal print_r, damit ihr den Array seht.
Array ( [0] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 21,80 [3] => € 0,81 [4] => € 5,00 [5] => € 48,60 ) [1] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 23,95 [3] => € 0,83 [4] => € 1,60 [5] => € 49,50 ) [2] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 24,90 [3] => € 0,90 [4] => € 3,90
(frei ab € 59,00) [5] => € 53,70 ) [3] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 26,00 [3] => € 0,94 [4] => € 4,50
(frei ab € 69,00) [5] => € 56,49 ))
Vielen Dank schonmal für jede Hilfe.
Bis dann,
Lupi
ich habe einen zweidimensional Array, den ich nach Feld [3] sortieren möchte, mit dem niedrigsten Preis zuerst. Das Problem ist, dass der Array zwangsläufig schon in der formatierten Form (also mit EURO-Währungssymbol €) und Dezimalkomma statt Dezimalpunkt vorliegt.
Beispiel:
€ 0,80
€ 1,25
€ 0,76
(also stets EURO-Währungssymbol €, dann ein Leerzeichen, dann die Ziffern mit Dezimalkomma)
Die Funktion, um den Array $filteredresults zu sortieren, habe ich schon.
Code:
function compare($x, $y) { if ($x[3] == $y[3]) {return 0;} else if ($x[3] < $y[3]) return -1; else return 1; } usort($filteredresults, "compare");
aktuellen Form lasse (€ 0,80). Also hoffe ich dass ihr mir helfen könnt,
eine Regex und schöne Lösung zu finden, um das Problem zu lösen.
Regex: Alles ausser Ziffern entfernen und Komma durch Punkt ersetzen.
Am schönsten wäre es natürlich, wenn die Regex direkt in der compare function
eingebaut werden könnte, also bspw.
if (ereg_replace('','',$x[3]) == ereg_replace('','',$y[3])
) {return 0;}
Hier nochmal print_r, damit ihr den Array seht.
Array ( [0] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 21,80 [3] => € 0,81 [4] => € 5,00 [5] => € 48,60 ) [1] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 23,95 [3] => € 0,83 [4] => € 1,60 [5] => € 49,50 ) [2] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 24,90 [3] => € 0,90 [4] => € 3,90
(frei ab € 59,00) [5] => € 53,70 ) [3] => Array ( [0] => PRODUKT [1] => 2 x 10 [2] => € 26,00 [3] => € 0,94 [4] => € 4,50
(frei ab € 69,00) [5] => € 56,49 ))
Vielen Dank schonmal für jede Hilfe.
Bis dann,
Lupi
Kommentar