php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.05.2006, 09:58  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard Mehrdimensionales Array sortieren

Ich habe für eine Fussball-Tabelle ein Array das in etwa so aussieht:
Code:
Array
(
    [1] => Array
        (
            [siege] => 3
            [punkte] => 9
            [unent] => 0
            [niederl] => 0
            [tore_plus] => 10
            [tore_minus] => 2
        )

    [2] => Array
        (
            [niederl] => 2
            [siege] => 0
            [unent] => 1
            [tore_plus] => 2
            [tore_minus] => 6
            [punkte] => 1
        )

    [3] => Array
        (
            [siege] => 2
            [punkte] => 6
            [unent] => 0
            [niederl] => 1
            [tore_plus] => 4
            [tore_minus] => 2
        )

    [4] => Array
        (
            [niederl] => 2
            [siege] => 0
            [unent] => 1
            [tore_plus] => 2
            [tore_minus] => 8
            [punkte] => 1
        )

)
Ich müsste das aber sortieren, nach Punkten, und Toren. array_multisort hab ich getestet, aber irgendwie nichts sinnvolles hinbekommen... Hat jemand da nen Denkanstoß für mich?
Unbekanntes_Pferd ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.05.2006, 11:00  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

hab grad usort entdeckt, damit kann ich die tabelle zumindest schonmal nach punkten sortieren:

Code:
function cmp_desc($a, $b) {
   return strcmp($b["punkte"], $a["punkte"]);
}

usort($tabelle, "cmp_desc");
allerdings müsste die auch noch bei punktgleichheit nach torverhältnis sortiert werden :/
Unbekanntes_Pferd ist offline  
Alt 23.05.2006, 11:48  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dann bau das in cmp_desc() ein!
Zergling-new ist offline  
Alt 23.05.2006, 12:50  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

ouha... auf die einfachste möglichkeit bin ich gar nich gekommen danke!

habs jetzt so:
Code:
function cmp_desc($a, $b) {
	if(strcmp($b["punkte"], $a["punkte"])!=0){
		//Punkte unterschiedlich
		return strcmp($b["punkte"], $a["punkte"]);
	} else {
		if(strcmp($b["tore_plus"], $a["tore_plus"])!=0){
			//Punkte gleich, tore_plus unterschiedlich
			return strcmp($b["tore_plus"], $a["tore_plus"]);
		} else {
			//Punkte gleich, tore_plus gleich
			return strcmp($a["tore_minus"], $b["tore_minus"]);
		}
	}
}
Unbekanntes_Pferd ist offline  
Alt 23.05.2006, 18:51  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

also es klappt leider doch noch nich so ganz. er sortiert zwar nach punkten, aber danach nich mehr nach der differenz:
Code:
function cmp_desc($a, $b) {
	$b["differenz"] = $b["tore_plus"]-$b["tore_minus"];
	$a["differenz"] = $a["tore_plus"]-$a["tore_minus"];
	
	if(strcmp($b["punkte"], $a["punkte"])!=0){
		//Punkte unterschiedlich
		return strcmp($b["punkte"], $a["punkte"]);
	} else {
		//Punkte gleich, differenz betrachten
		if(strcmp($b["differenz"], $a["differenz"])!=0){
			//unterschiedliche differenzen -> sortieren
			return strcmp($b["differenz"], $a["differenz"]);
		} else {
			//Punkte gleich, differenz gleich -> tore_plus zählen
			return strcmp($b["tore_plus"], $a["tore_plus"]);
		}
	}
}
Von den Regeln her sollte er im Grunde so sortieren: punkte DESC, differenz DESC, tore_plus DESC

Ich verlier langsam etwas den Überblick Findet jemand nen Fehler?
Unbekanntes_Pferd ist offline  
Alt 23.05.2006, 20:04  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

ich glaub nich, dass es wen interessiert , aber ich hab die lösung:

eigenartigerweise klappt es wenn ich
Code:
return strcmp($b["differenz"], $a["differenz"]);
durch
Code:
if($b["differenz"]>$a["differenz"]){ return 1; }
if($b["differenz"]<$a["differenz"]){ return -1; }
ersetze...

meiner meinung nach müsste das aber ein und dasselbe sein
Unbekanntes_Pferd ist offline  
Alt 23.05.2006, 20:42  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ist mir bisher garnicht aufgefallen, aber ein strcmp() macht wirklich keinen Sinn und wird noch dazu falsch, wenn du verschieden-stellige Zahlen vergleichst
Du willst ja keine Strings vergleichen, sondern Zahlen. Aber bist ja selbst drauf gekommen..
Zergling-new ist offline  
 


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 sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
mehrdimensionales Array als HTML-Formular mindhead PHP Tipps 2008 3 11.04.2008 15:25
Nach bestimmten Key ein mehrdimensionales Array sortieren PsychoEagle PHP Tipps 2006 2 04.07.2006 10:34
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
mehrdimensionales Array sortieren PHP Tipps 2007 8 30.12.2005 17:02
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Array verkehrt sortieren (key) // letzter Arrayeintrag PHP Tipps 2005-2 5 20.09.2005 15:55
Mehrdimensionales Array sortieren PHP Tipps 2005-2 2 10.08.2005 08:35
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
mehrdimensionales Array sortieren PHP Tipps 2005 5 29.04.2005 20:38
mehrdimensionales array sortieren MrCavity PHP Tipps 2005 3 31.01.2005 14:51
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
mehrdimensionales Array sortieren Simbo PHP Tipps 2004 30 29.07.2004 17:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
usort mehrdimensionales array, array sortieren, 2 dimensionales array sortieren php, php if($b[\differenz\]>$a[\differenz\]){ return 1; }, php sort 2 dimensional array, php 2 dimensionales array sortieren, usort mehrdimensional, usort fußball tabelle, fussball tabelle usort, formularfelder sperren, php function sort dimensionales array, 2 dimensionales array php sortieren, php fussball tabelle array sortierung, php 2 dim array sortieren, php sortieren \2-dimensionales array\, tabelle mit php sortieren -mysql, zweidimensionales array differenz, array sortieren fußball tabelle php, array sortieren tabelle, usort mehrdimensionale arrays

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:05 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.