php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2008, 12:30  
Neuer Benutzer
 
Registriert seit: 18.07.2008
Beiträge: 2
Lupi befindet sich auf einem aufstrebenden Ast
Standard Array sortieren mit regex

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.

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");
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
Lupi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.07.2008, 13:01  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ungetestet:
PHP-Code:
function compare($x$y) {
     
$x1 preg_replace(array('/[€ ]/''/,/'), array('''.'), $x[3]);
     
$y1 preg_replace(array('/[€ ]/''/,/'), array('''.'), $y[3]);
     return 
$x1 $y1 ? ($x1 == $y1 : -1) : 1;
}

__________________
Gruss
L
lazydog ist offline  
Alt 18.07.2008, 13:08  
Neuer Benutzer
 
Registriert seit: 18.07.2008
Beiträge: 2
Lupi befindet sich auf einem aufstrebenden Ast
Standard

Funktioniert bestens, vielen Dank für deine Hilfe lazydog.
Lupi ist offline  
Alt 21.07.2008, 15:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Dafür brauchts doch keine regExpr.
PHP-Code:
str_replace (array (' ' '€' '&euro;' ',') , 
             array (
'' '' '' '.') , 
             ...); 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array nach bestimmter Spalte sortieren GELight PHP Tipps 2006 4 19.08.2006 23:42
Mehrdimensionales Array sortieren Unbekanntes_Pferd PHP Tipps 2006 6 23.05.2006 20:42
array richtig sortieren, dann ausgeben Heart PHP Tipps 2006 5 28.04.2006 20:23
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Array verkehrt sortieren (key) // letzter Arrayeintrag PHP Tipps 2005-2 5 20.09.2005 15:55
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array sortieren PHP Tipps 2005 7 15.05.2005 02:14
2 Array in Abhänigkeit sortieren? PHP Tipps 2005 4 10.02.2005 20:31
Array mit Gruppen: Wie Sortieren PHP Tipps 2005 2 29.01.2005 15:15
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regex sort, php sort regex, regex array, array sortieren dezimalzahlen, regex sortieren, ziffern in einem array sortieren, http://www.php.de/php-tipps-2008/2140-array-sortieren-mit-regex.html, php \array rotieren\, regex umsortieren, php array regex, regex php alles außer ziffern entfernen, regexpr php vergleichen, array nach feld sortieren, php sort dezimalkomma, php sort array regex, php array komma in punkt ändern, php x y array sortieren, sortieren mit regex, php array(1=>30,2=>50,4=>90), php array regex ähnliche entfernen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum