Thema: funktion mit halbvariablem namen aufrufen


Seite durchsuchen:
Home


zurück zur Übersicht

Diskussionsgruppe: PHP

hallo!

wie kann ich eine funktion mit "halbvariablem" namen aufrufen?
beispiel:

$a=array("muller","maier");
"hole_".$a[0]();

function hole_muller(){
   echo "muller";
}


gibt einen syntaxfehler.
wie gehts richtig, geht es überhaupt?

was natürlich geht ist:

$fname="hole_".$a[0];
$fname();

ist aber unübersichtlicher.

vielen dank!

Von: gwen Datum: 22.06.2007, 21:44

alle Antworten zu dieser Frage




Antwort 1 von Hobst_Eppers vom 23.06.2007, 01:14
Zitat:
$fname="hole_".$a[0];
$fname();
Unübersichtlich?? Sei froh, dass sowas überhaupt geht - ist mir gänzlich neu!

Ansonsten ist Dir die Doku dieser Funktion sicherlich eine Hilfe: http://de2.php.net/manual/de/function.eval.php

Antwort 2 von gwen vom 24.06.2007, 20:29
danke für den guten tipp!

Zitat:
ist mir gänzlich neu!

kennste schon variable variablennamen? auch ein lustiges feature.

$schwarz="dunkel";
$katze="schwarz";
echo $$katze;


Antwort 3 von Hobst_Eppers vom 25.06.2007, 00:45
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:

$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 vom 27.06.2007, 17:27
hi hobst!

wie lautet denn der inhalt der funktion? (=>"undefined function")

Antwort 5 von son_quatsch vom 27.06.2007, 22:23
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"

?>


Antworten der Gruppe: PHP
www.supportnet.de







Office 365 stellt vertraute Microsoft Office-Tools für die Zusammenarbeit und Produktivität über die Cloud bereit. So können alle ganz einfach von nahezu überall zusammenarbeiten und auf E-Mails, Webkonferenzen, Dokumente und Kalender zugreifen.