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