php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.03.2006, 23:21  
Neuer Benutzer
 
Registriert seit: 06.09.2005
Beiträge: 20
Werkler
Standard Problem mit Vergleichsfunktion bei uasort()

Hallo,

ich habe folgendes Array innerhalb einer Klasse:
Code:
array(
key1 => array(ukey1 => val1, ukey2 => val2,  ... , ukey6 => val6),
key2 => array(ukey1 => val1, ukey2 => val2,  ... , ukey6 => val6),
...
)
So, nun will ich dieses Array nach den verschiedenen vals sortieren. Dazu will ich uasort verwenden mit z. B. folgender Vergleichsfunktion für val1:
Code:
function cmp_ukey1($x, $y)
{
 if (strcmp($x['ukey1'], $y['ukey1']) == 0)
  return 0;   	
 return (strcmp($x['ukey1'], $y['ukey1']) < 0) ? -1 : 1;
}
Der Aufruf und die Ausgabe erfolgen dann weiter unten via
Code:
uasort($this->arrayname, "cmp_ukey1");
foreach($this->arrayname as $id => $arr)
...
Aber der Interpreter beschwert sich dann jedesmal mit
Warning: uasort(): Invalid comparison function.

Was stimmt da noch nicht?
__________________
Viele Grüße,
Werkler
Werkler ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.03.2006, 23:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$arr 
= array(
key1 => array(ukey1 => val1ukey2 => val2,  ukey6 => val6),
key2 => array(ukey1 => val1ukey2 => val2,  ukey6 => val6)
);

function 
cmp_ukey1($x$y)
{
 if (
strcmp($x['ukey1'], $y['ukey1']) == 0)
  return 
0;
 return (
strcmp($x['ukey1'], $y['ukey1']) < 0) ? -1;
}

uasort($arr"cmp_ukey1");
foreach(
$arr as $key => $value) {
    print 
"$key => $value
"
;
}
?>
Hiermit bekomme ich keinen Fehler. Ob die Sortierung nach deinen Wünschen funktioniert weiß ich allerdings nicht.

Ist cmp_ukey() denn wirklich als Funktion oder doch als Methode deklariert?


(Fred verschoben: Parser-Fehler)
Zergling-new ist offline  
Alt 28.03.2006, 01:35  
Neuer Benutzer
 
Registriert seit: 06.09.2005
Beiträge: 20
Werkler
Standard

Arghh, hatte sie tatsächlich als Methoden implementiert. Als Funktionen klappen sie wunderbar, vielen Dank für den wertvollen Tipp! Und sorry wegen der Forenverwechslung.
__________________
Viele Grüße,
Werkler
Werkler ist offline  
Alt 28.03.2006, 02:08  
Gast
 
Beiträge: n/a
Standard

Du kannst es auch als Methode definieren.
Entweder gibst Du dann das passende Objekt mit an. Dann darfst Du $this in der Methode verwenden.
Oder Du gibst den Klassennamen zu einer statischen Methode an.

PHP-Code:
uasort($this->arr, array($this'compMethod'));
uasort($this->arr, array('Classname''staticCompMethod')); 
 
Alt 28.03.2006, 02:13  
Neuer Benutzer
 
Registriert seit: 06.09.2005
Beiträge: 20
Werkler
Standard

Wieso findet man solche hilfreichen Erklärungen im Handbuch nicht. Oder war ich einfach nur zu blind? Danke jedenfalls!
__________________
Viele Grüße,
Werkler
Werkler ist offline  
Alt 28.03.2006, 02:18  
Gast
 
Beiträge: n/a
Standard

Das steht leider nicht an allen Stellen im Handbuch.
Aber das funktioniert bei allen(?) callbacks in php: http://de.php.net/manual/en/language...types.callback
 
Alt 28.03.2006, 07:45  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

War mir auch neu.
Zergling-new ist offline  
Alt 28.03.2006, 10:28  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Bruchpilot
Das steht leider nicht an allen Stellen im Handbuch.
Aber das funktioniert bei allen(?) callbacks in php: http://de.php.net/manual/en/language...types.callback
Streich mal in Gedanken das allen. Oder mach daraus ein "bei allen gängigen"
Leider kommt es wirklich auf die Extension drauf an. Bei den Standard-Callbacks, wie insbesondere den Array- oder Fehlerhandlern klappt das. Bei "exotischeren" Extensions sollte man sich nicht drauf verlassen bzw. es mal ausprobieren.
mepeisen ist offline  
Alt 28.03.2006, 16:35  
Neuer Benutzer
 
Registriert seit: 06.09.2005
Beiträge: 20
Werkler
Standard

Zitat:
Zitat von Bruchpilot
Das steht leider nicht an allen Stellen im Handbuch.
Aber das funktioniert bei allen(?) callbacks in php: http://de.php.net/manual/en/language...types.callback
Vielen Dank für diesen Link, der war und ist Gold wert
__________________
Viele Grüße,
Werkler
Werkler 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
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Array Problem [Ansatz ?] PHP Tipps 2005 0 27.01.2005 18:24
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php uasort, uasort php, php vergleichsfunktion, vergleichsfunktion php, php uasort fehler, uasort innerhalb von methoden nutzen, php vergleichsfunktion klasse, php uasort in klasse, php uasort problem, php uasort not working, php vergleichsfunktionen, uasort problem, php uasort callback в классе, uasort in klasse, php vergleichsfunktion objekte, php uasort invalid comparison function, warning: uasort() [function.uasort]: invalid comparison function, php vergleichsfunktion array, uasort() [function.uasort]: invalid comparison function., uasort invalid comparison function

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