Mailinglisten-Archive |
Aber so geht es: if(!function_exists(sort_n)) { function sort_n($a,$b) {//wortlänge if(strlen($a) == strlen($b)) return 0; return (strlen($a) > strlen($b)) ? 1 : -1; } } uksort($this->menu[$n_path], "sort_n"); :). Problem ist, dass das Objekt weiterexistiert, und die funktion schon im Objekt deklariert wurde, ein zweiter Deklarationversuch wirft einen Fehler. Analog dazu Dein vorheriges Beispiel überarbeitet: <?php class sortierung { var $a = array (4 => "vier", 3 => "drei", 20 => "zwanzig", 10 => "zehn"); function do_the_do_it() { $a = $this->do_it(); return $a; } function do_it () { //if(!function_exists("cmp")) //{ function cmp ($a, $b) { if ($a == $b) return 0; return ($a > $b) ? -1 : 1; } //} uksort ($this->a, "cmp"); //uksort ($this->a, "cmp"); return $this->a; } } $mysort = new sortierung; $a=$mysort->do_the_do_it(); print_r($a); $a=$mysort->do_the_do_it(); print_r($a); ?> -> Gibt ohne die function_exists Abfrage genau denselben Fehler, wie ich bekam. Aber vielen Dank für Deine Idee!! -----Ursprüngliche Nachricht----- Von: php-bounces at phpbar.de [mailto:php-bounces at phpbar.de] Im Auftrag von LB Gesendet: Samstag, 1. Januar 2005 18:59 An: 'deutschsprachige PHP-Mailingliste' Betreff: AW: [php] uksort innerhalb von klassen Also wenn ich eine funktion in die klassenmethode packe, bekomme ich den fehler: Cannot redeclare sort_n() (previously declared in file.php:352) in file.php on line 352 Habe das so mal probiert: Zeile 352 ist hier an der stelle wo "function sort_n" steht. class{ [...] function() { [...] function sort_n($a,$b) {//wortlänge if(strlen($a) == strlen($b)) return 0; return (strlen($a) > strlen($b)) ? 1 : -1; } uksort($this->menu[$n_path], "sort_n"); } } -----Ursprüngliche Nachricht----- Von: php-bounces at phpbar.de [mailto:php-bounces at phpbar.de] Im Auftrag von Peter Bieling Gesendet: Samstag, 1. Januar 2005 18:19 An: deutschsprachige PHP-Mailingliste Betreff: Re: [php] uksort innerhalb von klassen Peter Bieling wrote: > Es gibt wohl neuerdings keine Möglichkeit, uksort mitzuteilen, dass sich > die Callbackfunktion innerhalb der Klasse befindet. Dir bleibt dann wohl > nichts übrig, als die Funktion für die Klasse nachzubauen oder die > Sortierung außerhalb der Klasse vorzunehmen. War etwas voreilig. So geht es doch. (Abgewandeltes Beispiel aus dem Manual.) Pack einfach die Callbackfunktion in die Methode und fertig. <?php class sortierung { var $a = array (4 => "vier", 3 => "drei", 20 => "zwanzig", 10 => "zehn"); function do_it () { function cmp ($a, $b) { if ($a == $b) return 0; return ($a > $b) ? -1 : 1; } uksort ($this->a, "cmp"); //uksort ($this->a, "cmp"); return $this->a; } } $mysort= new sortierung; $a=$mysort->do_it(); print_r($a); ?> -- ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de ** Informationen: http://www.phpbar.de http://lists.phpbar.de/mailman/listinfo/php -- ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de ** Informationen: http://www.phpbar.de http://lists.phpbar.de/mailman/listinfo/php
php::bar PHP Wiki - Listenarchive