WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 15.03.2005, 15:52   #1
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard PHP: using $this ... uasort

PHP:
Wenn ich in der Compare-Funktion zu uasort auf $this->categories zugreife, erhalte ich die Fehlermeldung:
"Fatal error: Using $this when not in object context in"

Ich erhalte diese Fehlermeldung auch dann, wenn ich diese Funktion lokal als Unterfunktion in der Klasse selber aufrufe.

Ich rufe es auf mit:
Code:
uasort ($productsArray[$v], "categorycomp");
Ich habe folgendes probiert:
Code:
$categories1=array();			// It is a copy of $this->categories to make asort possible
function categorycomp($row1, $row2)  {
global $categories1;
debug($this->categories1,'$this->categories1', __LINE__, __FILE__);
debug($categories1,'$categories1', __LINE__, __FILE__);
return strcmp($categories1[$row1['category']], $categories1[$row2['category']]);
}
Der Aufruf erfolgt in einer Funktion der Klasse
Code:
class tx_ttproducts { 	var $categories=array();
D.h. auch wenn ich vor dem Funktionsaufruf $categories1=$this->categories zuweise, dann sind alle Werte von $categories1 in categorycomp leer.
Wie muß ich die $this-Variablen oder andere Variablen korrekt an die Compare-Funktion in uasort übergeben?

wenn ich es als Klassen-Member implementiere, erhalte ich:

"Warning: uasort() [function.uasort]: Invalid comparison function. in"

Code:
uasort ($productsArray[$v], "main_products::categorycomp");
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 15.03.2005, 16:25   #2
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Ich habe jetzt eine Lösung gefunden:
Beim Aufruf
Code:
						global $categories1;
$categories1 = $this->categories;
schreiben.

Aber gibt es eine Möglichkeit, die Compare-Funktion als Klassen-Methode zu implementieren, damit ich direkt über $this->categories dort zugreifen kann?
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 16.03.2005, 10:20   #3
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

uasort(..., array(&$this, 'compareFunc'));

RTFM

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 16.03.2005, 11:07   #4
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Code:
uasort ($productsArray[$v], array(&$this, 'categorycomp'));
vielen Dank!

____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:30 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag