callbacks in der Klasse Definieren?

NetBull

Erfahrenes Mitglied
Hi,

wie definiere ich CALLBACKS innerhalb einer Klasse?


class test{

static function iComparableGroups($a, $b){
return $b['id'] - $a['id'];
}

public function testMethod(){
$aReturn = array(
array('name'=>'test', 'id'=>'2'),
array('name'=>'muster', 'id'=>'1')
)
$aReturn = usort($aReturn, ????);
}
}

LG NetBu||
 
Kannst du den Code noch in eine Lesbare Form bringen? code-Tags helfen dabei

Und was soll dein Beispielcode zeigen?

Nachtrag:
Dein Code strozt vor Fehler
Schau dir mal die definition von usort an.
Er fehlen zudem ;

Der Aufruf ist array("self","functionname")

Hier ein Beispiel wie es funktioniert
PHP:
class Test{
	
	private static function iComparableGroups($a, $b){
		return $b['id'] - $a['id'];
	}
	
	public function testMethod(){
		$aReturn = array(
			array('name'=>'test', 'id'=>'2'),
			array('name'=>'test3', 'id'=>'3'),
			array('name'=>'muster', 'id'=>'1')
		);
		usort($aReturn, array('self', 'iComparableGroups'));
		print_r($aReturn);
	}
}
 
Zuletzt bearbeitet:
Hi,

hatte meinen Code nicht aus der IDE gezogen, sondern schnell runter getippt. Sorry ich gelobe Besserung... :)

Sieht zumindest schon mal besser aus als meine bisherigen Versuche:

Hier die Comparable....
PHP:
private static function iComparableGroups($a, $b){
        return $b['id'] - $a['id'];
    }

Hier die Methode die es aufruft.
PHP:
public function getFieldGroups(){
        $aReturn = array();
        foreach($this->labels as $eLabel){
            $aReturn[] = array('id'=>$eLabel->getGroupOrder(), 'label'=>$eLabel->getGroup());
        }
        $aReturn = array_unique($aReturn, SORT_REGULAR);
        var_dump($aReturn);
        $aReturn = usort($aReturn, array('self', 'iComparableGroups'));
        var_dump($aReturn);
        return $aReturn;
    }

Das erste Vardump gibt folgendes aus:
Code:
array (size=2)
  0 =>
    array (size=2)
      'id' => int 2
      'label' => string 'Nebendaten' (length=10)
  1 =>
    array (size=2)
      'id' => int 1
      'label' => string 'Hauptdaten' (length=10)

Das zweite gibt nur ein TRUE aus. Dabei hätte ich das ARRAY gerne nach id sortiert.
LG NetBu||
 
usort() liefert boolean zurück, wenn es erfolgreich war. Dabei wird das Array sortiert über call-by-reference aus usort() zurück gegeben. Sprich, eine Zuweisung $a = usort($a ...) verliert den sortierten Inhalt des Array $a. Richtig wäre
PHP:
if( !usort($a...) ) { 
  throw Exception("Sort failed");
}

Grüße
 
ah das wars, ogott wie peinlich,.. hab vorher eine eigene Methode versucht, die das sortierte zurückgibt. Dann erst usort Ansatz verfolgt und vergessen das es by reference ist. merci
 

Neue Beiträge

Zurück