Supportnet / Forum / Skripte(PHP,ASP,Perl...)
funktion mit halbvariablem namen aufrufen
Frage
hallo!
wie kann ich eine funktion mit "halbvariablem" namen aufrufen?
beispiel:
[code]
$a=array("muller","maier");
"hole_".$a[0]();
function hole_muller(){
echo "muller";
}
[/code]
gibt einen syntaxfehler.
wie gehts richtig, geht es überhaupt?
was natürlich geht ist:
[code]
$fname="hole_".$a[0];
$fname();
[/code]
ist aber unübersichtlicher.
vielen dank!
Antwort 1 von Hobst_Eppers
Zitat:
$fname="hole_".$a[0];
$fname();
Unübersichtlich?? Sei froh, dass sowas überhaupt geht - ist mir gänzlich neu!$fname="hole_".$a[0];
$fname();
Ansonsten ist Dir die Doku dieser Funktion sicherlich eine Hilfe: http://de2.php.net/manual/de/function.eval.php
Antwort 2 von gwen
danke für den guten tipp!
kennste schon variable variablennamen? auch ein lustiges feature.
Zitat:
ist mir gänzlich neu!
ist mir gänzlich neu!
kennste schon variable variablennamen? auch ein lustiges feature.
$schwarz="dunkel";
$katze="schwarz";
echo $$katze;
Antwort 3 von Hobst_Eppers
Jup, das war mir schon bekannt :P Die Antwort lautet "dunkel".
Vor ca. einem Jahr hat mal einer gefragt, ob man den Namen einer Variable herausbekommen könnte, z.B. auf folgende Weise:
...gibt "foo" aus. Eine Operation von tief unten hinten an die Augen ran, aber es klappt ;-) DAS nenn ich schräg!
Vor ca. einem Jahr hat mal einer gefragt, ob man den Namen einer Variable herausbekommen könnte, z.B. auf folgende Weise:
$foo= "bar";
echo yourNameIs($foo);
...gibt "foo" aus. Eine Operation von tief unten hinten an die Augen ran, aber es klappt ;-) DAS nenn ich schräg!
Antwort 4 von gwen
hi hobst!
wie lautet denn der inhalt der funktion? (=>"undefined function")
wie lautet denn der inhalt der funktion? (=>"undefined function")
Antwort 5 von son_quatsch
Das möchtest Du gar nicht wissen! Aber hier eine Vorführung:
<?php
function vname(&$var, $scope=false, $prefix='unique', $suffix='value')
{
if($scope) $vals = $scope;
else $vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix;
$vname = FALSE;
foreach($vals as $key => $val) {
if($val === $new) $vname = $key;
}
$var = $old;
return $vname;
}
$o= 'test';
echo vname($o); // this outputs "o"
?>