phpbar.de logo

Mailinglisten-Archive

AW: [php] uksort innerhalb von klassen

AW: [php] uksort innerhalb von klassen

LB lsblsb at gmx.de
Sam Jan 1 18:58:40 CET 2005


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




php::bar PHP Wiki   -   Listenarchive