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 19:05:58 CET 2005


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