php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.02.2007, 12:03  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard Sortieren eines Arrays mittels Funktion ?

Hallo Forum,

Leider schaffe ich es einfach nicht ein Array mittels einer Funktion zu sortieren !? Hoffe einer von euch hat da schon Erfahrung !?

Hier mein Array:

PHP-Code:
$arr_tab[$i]['verein'] = $verein;
$arr_tab[$i]['punkte'] = $punkte;
$arr_tab[$i]['siege'] = $siege;
$arr_tab[$i]['niederlagen'] = $niederlagen
Meine Funktion:

PHP-Code:
function cmp($a$b) {
    return 
strcmp($a['punkte'], $b['punkte']);

Und so rufe ich das dann auf:

PHP-Code:
$sortcheck usort($arr_tab"cmp"); 
Das ganze soll dann nach Punkten sortiert werden, doch leider klappt das bei mir nicht !? bekomme auch keine Fehlermeldung o.ä. !?

Mit klappt nicht meine ich das das Array genauso sortiert ist wie vorher !?

Danke schonmal & LG
madSoul ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.02.2007, 12:12  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Hm so jetzt grundsätzlich kann ich da keinen Fehler sehen ????
Vllt. kannst du mal 1-2 Beispieldatensätze posten ...

weil du hast 's anscheinend direkt von der Manual HP übernommen ...

http://de3.php.net/manual/de/function.usort.php
M3g4Star ist offline  
Alt 21.02.2007, 12:22  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

Jup, habs echt 1 zu 1 aus dem Manual...

Das mit den Datensätzen ist so ne Sache - wenn ich das Array per Hand schreibe stimmt auch die sortierung - kommts aus der DB ist der Hund drin !?

dazu gehört auch eigentlich noch dieser Beitrag http://www.phpfriend.de/forum/ftopic61190-s20.html

Da wird eine Fußballtabelle berechnet.
Jetzt gibt es eben Sonderfälle (z.B. -3 Punkte) da wird dann vor dem eintragen ins Array ein gewisser Wert von "Punkte" abgezogen. Jetzt ist der Verein dem die Punkte abgezogen wurden ganz oben in der Liste !? Rest der sortierung scheint ok !?
__________________
it´s not a bug - it´s a feature...
madSoul ist offline  
Alt 21.02.2007, 13:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn du Zahlen an strcmp() übergibst, werden die Zahlen eben auch als Strings verglichen, und da ist 3 nunmal größer als 20 (da 3 > 2).
Zergling-new ist offline  
Alt 21.02.2007, 13:14  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

F**K !!!
gibts da vielleicht ne alternative ?
__________________
it´s not a bug - it´s a feature...
madSoul ist offline  
Alt 21.02.2007, 13:47  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
function cmp($a$b) {
    return 
$a $b;

__________________
Gruss
L
lazydog ist offline  
Alt 21.02.2007, 13:48  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

http://de.php.net/strcmp
Zitat:
int strcmp ( string str1, string str2 )
Ist str1 kleiner als str2 wird < 0 zurückgegeben, ist str1 größer als str2 > 0, und bei Gleichheit gibt die Funktion 0 zurück.
Die Funktionalität wirst du ja gerade noch selbst für Zahlen implementieren können
Zergling-new ist offline  
Alt 21.02.2007, 13:51  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

Zitat:
Zitat von Zergling
Die Funktionalität wirst du ja gerade noch selbst für Zahlen implementieren können
....Ähhhmmm.... fürchte nicht !? Ich versteh nur Bahnhof !? Sorry !!
madSoul ist offline  
Alt 21.02.2007, 14:44  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Beim Sortieren mit usort() wird ja eine Sortier-Funktion als 2. Parameter übergeben.
In deinem Fall deine eigene Funktion cmp(). Diese muss 2 Parameter entgegen nehmen können und einen Rückgabewert von entweder 1, 0 oder -1 haben.
Zitat:
Ist str1 kleiner als str2 wird < 0 zurückgegeben, ist str1 größer als str2 > 0, und bei Gleichheit gibt die Funktion 0 zurück.
Dadurch weiß PHP, welches der beiden Elemente, die es gerade an deine Sortier-Funktion übergeben hat, größer oder kleiner ist, oder ob beide gleichgroß sind.
Dadurch kann PHP den Array überhaupt erst sortieren.

Deine Funktion muss also $a bzw. $b anschauen, die Punkte (und zB noch die Tore) vergleichen und eben 1, 0 oder -1 zurückgeben.


strcmp() macht genau das, schau es dir mit einem Beispiel an:
PHP-Code:
<?php
var_dump
(strcmp("a""z"), strcmp("z""a"), strcmp("a""a"));
var_dump(strcmp("10""2"), strcmp("10""02"));
?>
Offenbar kann die Funktion also nur mit Strings umgehen, nicht aber mit Integer-Werten.
Zergling-new ist offline  
Alt 21.02.2007, 15:10  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

Hey Zergling

Wenn ich Dich nicht hätte.... :wink:
Danke für´s Beispiel (int(-1) int(1) int(0) int(-1) int(1))

Das ganze wurde mir leider schon wieder zu kompliziert, daher hab ich mir zu Deiner anderen Antwort (werden die Zahlen eben auch als Strings verglichen, und da ist 3 nunmal größer als 20) mal gedanken gemacht und hab das jetzt so gelöst dass ich vor´m sortieren allen Punkten unter 10 eine "0" vorangestellt habe, welche ich bei der Ausgabe wieder entferne. Klappt 1A !!!

Das mit strcmp() muss ich mir nochmal genauer anschauen...

LG
madSoul 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
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
eindimensionale arrays sortieren webazubi PHP Tipps 2007 5 23.03.2007 18:11
Arrays sortieren, Bezeichnung, Preis Ticos PHP Tipps 2006 4 07.09.2006 19:37
Fehlermeldung beim Sortieren meines Arrays... GELight PHP Tipps 2006 5 27.04.2006 22:08
Arrays alphabetisch sortieren seven-12 PHP Tipps 2007 4 17.11.2005 14:33
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
[Erledigt] Problem mit Referenzen auf Arrays PHP-Fortgeschrittene 4 16.09.2005 23:13
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Sortieren von Arrays mit mehr als 2 Dimensionen PHP-Fortgeschrittene 8 05.07.2005 16:48
[Erledigt] sortieren von arrays aus mysql Datenbanken 7 28.04.2005 21:53
5 assosiative arrays gleichzeitig sortieren PHP Tipps 2004-2 2 13.12.2004 14:07
Arrays nachträglich (Inhalte) zählen und sortieren Gumfuzi PHP Tipps 2004-2 3 20.11.2004 00:00
Mehrdimensionale Arrays sortieren Borlox PHP Tipps 2004 5 23.09.2004 14:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
strcmp zahlen, strcmp sortieren, strcmp mit zahlen, php sortieren eigene funktion, php array alphabetisch sortieren mit cmp, usort variable übergeben, php usort string, funktion sortieren, php usort parameter, php usort eigener parameter funktionsaufruf, sortieren strcmp, php eigene sortierung, php strcmp zahlen, sortieren mit strcmp, php sort egene funktiuon, strcmp sotieren, php sort eigene funktion, php usort variable übergeben, php array eigene sortierung, php function sortieren

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