|
| Udføre function... Fra : Stig Nørgaard Jepsen |
Dato : 09-08-01 20:52 |
|
Hvordan er det muligt at udføre en funktion ved hjælp af navnet på
funktionen som ligger i en variabel?
Lidt svært at forklare, men fx har jeg en funktion:
function sighej() {
echo "Hej hej<br>";
};
I en variabel har jeg så fx:
$envariabel = "sighej();";
Hvordan kan jeg så udføre sighej() med denne variabal?
Mvh Stig N. Jepsen
| |
Robert Hjertmann Chr~ (09-08-2001)
| Kommentar Fra : Robert Hjertmann Chr~ |
Dato : 09-08-01 20:58 |
|
[KLIP]
> $envariabel = "sighej();";
>
> Hvordan kan jeg så udføre sighej() med denne variabal?
>
function sighej($envariabel)
{
echo "Hej $envariabel";
}
Du kan give funktionen en standard værdi således:
function sighej($envariabel="tingogsager")
{
echo "Hej $envariabel";
}
Dvs. at hvid du kalder
sighej();
Så bliver outputtet:
Hej tingogsager
Og hvis du vil returnere noget så
function sighej()
{
echo "balkaja";
return 2
}
$envaribel = sighej();
Så bliver $envariabel lig med 2.
Men ellers så dokumentationen på www.php.net
Det skader ikke at læse noget at det grundlæggende.
--
Robert Christiansen
Student at the Technical University of Denmark,
Department of Informatics and Mathematical Modelling,
Computer Engineering & Technology Division
( www.imm.dtu.dk/cet)
| |
Martin Mouritzen (09-08-2001)
| Kommentar Fra : Martin Mouritzen |
Dato : 09-08-01 21:03 |
|
After I finished the 3 Pan Galactic Gargle Blasters, "Stig Nørgaard
Jepsen" <stigen@mail.dk> just offered me, he muttered some weird
stuff, and I had to correct this gibberish:
>I en variabel har jeg så fx:
>$envariabel = "sighej();";
>
>Hvordan kan jeg så udføre sighej() med denne variabal?
eval($variabel);
http://php.net/manual/en/function.eval.php
hth,
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>
| |
Jacob Bunk Nielsen (09-08-2001)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 09-08-01 21:19 |
|
"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:
> function sighej() {
> echo "Hej hej<br>";
> };
>
> I en variabel har jeg så fx:
> $envariabel = "sighej();";
>
> Hvordan kan jeg så udføre sighej() med denne variabal?
Jeg tror call_user_func() er din ven. Se
evt. < http://php.net/manual/en/function.call-user-func.php>.
--
Jacob
The Macintosh - the computer for people with only one working finger.
http://www.bunk.cc - nu med Emacs effekt
| |
Svenne Krap (09-08-2001)
| Kommentar Fra : Svenne Krap |
Dato : 09-08-01 21:49 |
| | |
Jacob Bunk Nielsen (09-08-2001)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 09-08-01 22:17 |
|
Svenne Krap <usenet@krap.dk> writes:
> > call_user_func()
>
> Tja, man kan også padle over storebælt for at hente (salt)vand....
Ja
> function testme() {
> echo "ABE";
> }
> $funct="testme";
> $funct();
Jeg prøvede faktisk noget i retning af
$funct = "testme()";
$funct;
inden jeg skrev mit indlæg, så jeg havde næsten idéen. Det virkede
ikke her, så jeg gik på jagt i manualen og fandt call_user_func().
--
Jacob
Can we try with real bullets now?
http://www.bunk.cc - nu med Emacs effekt
| |
Kenneth Schmidt (09-08-2001)
| Kommentar Fra : Kenneth Schmidt |
Dato : 09-08-01 23:33 |
|
Jacob Bunk Nielsen wrote:
> Svenne Krap <usenet@krap.dk> writes:
>
>> > call_user_func()
>>
>> Tja, man kan også padle over storebælt for at hente (salt)vand....
>
> Ja
>
>> function testme() {
>> echo "ABE";
>> }
>> $funct="testme";
>> $funct();
>
> Jeg prøvede faktisk noget i retning af
> $funct = "testme()";
> $funct;
Hvis du kigger efter ser du at de to kodestumper ikke er ens. Svenne's
udgave virker faktisk.
--
Kenneth Vestergaard Schmidt
"Nac mac Feegle wha hae!"
| |
Jacob Bunk Nielsen (09-08-2001)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 09-08-01 23:54 |
|
Kenneth Schmidt <nospam@binary.dyndns.dk> writes:
> >> $funct="testme";
> >> $funct();
> >
> > $funct = "testme()";
> > $funct;
>
> Hvis du kigger efter ser du at de to kodestumper ikke er ens. Svenne's
> udgave virker faktisk.
Jeg er helt klar over de ikke er ens!
Jeg skrev jo også bare at jeg havde haft samme tankegang som Svenne,
men var bare ikke nået frem til den helt korrekte syntaks, da det ikke
lige havde virket var jeg gået på jagt i manualen.
--
Jacob
But I can't upgrade my kernel, I've got some mad uptime!
http://www.bunk.cc - nu med Emacs effekt
| |
Kenneth Schmidt (10-08-2001)
| Kommentar Fra : Kenneth Schmidt |
Dato : 10-08-01 12:17 |
|
Jacob Bunk Nielsen wrote:
> Jeg er helt klar over de ikke er ens!
>
> Jeg skrev jo også bare at jeg havde haft samme tankegang som Svenne,
> men var bare ikke nået frem til den helt korrekte syntaks, da det ikke
> lige havde virket var jeg gået på jagt i manualen.
Okay, så havde jeg fejllæst. Undskyld. ;-(
--
Kenneth Vestergaard Schmidt
"Nac mac Feegle wha hae!"
| |
Stig Nørgaard Jepsen (10-08-2001)
| Kommentar Fra : Stig Nørgaard Jepsen |
Dato : 10-08-01 08:02 |
|
> >Jeg tror call_user_func() er din ven. Se
> >evt. < http://php.net/manual/en/function.call-user-func.php>.
>
> Tja, man kan også padle over storebælt for at hente (salt)vand....
>
> Følgende fungerer svjh i php >= 4.0.0. I hvertfald i 4.0.6.
>
> <?php
>
> //definer funktion
> function testme() {
> echo "ABE";
> }
> // sæt navnet af funktionen i en variabel
> $funct="testme";
>
> // udfør funktionen variablen indeholder navnet på.
> $funct();
>
> ?>
Hmm.. Éet problem.
Hvad nu hvis funktionen har nogle parametre, fx:
function testme($text) {
echo $text . "<br>";
};
og variablen indeholder:
$execfunc = "testme("ABC");
Så du'r følgende ikke:
$funct();
Da den vil se det som:
testme("ABC")();
En let løsning på det?
Mvh Stig
| |
Stig Nørgaard Jepsen (10-08-2001)
| Kommentar Fra : Stig Nørgaard Jepsen |
Dato : 10-08-01 08:11 |
|
> Hmm.. Éet problem.
> Hvad nu hvis funktionen har nogle parametre, fx:
> function testme($text) {
> echo $text . "<br>";
> };
>
> og variablen indeholder:
> $execfunc = "testme("ABC");
>
> Så du'r følgende ikke:
> $funct();
>
> Da den vil se det som:
> testme("ABC")();
>
> En let løsning på det?
Så er det vel eval() funktionen der er bedst ?
Mvh Stig
| |
Niels Andersen (10-08-2001)
| Kommentar Fra : Niels Andersen |
Dato : 10-08-01 08:11 |
|
"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3b73886e$0$290$edfadb0f@dspool01.news.tele.dk...
> > $execfunc = "testme("ABC");
$execfunc = 'testme("ABC")';
> Så er det vel eval() funktionen der er bedst ?
Yep.
--
Mvh.
Niels Andersen
| |
Jacob Bunk Nielsen (11-08-2001)
| Kommentar Fra : Jacob Bunk Nielsen |
Dato : 11-08-01 13:05 |
|
"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:
> > testme("ABC")();
> >
> > En let løsning på det?
>
> Så er det vel eval() funktionen der er bedst ?
Eller call_user_func
(< http://php.net/manual/en/function.call-user-func.php>), som jeg
startede med at henvise til
--
Jacob
Don't anthropromorphize computers. They hate that.
http://www.bunk.cc - nu med Emacs effekt
| |
Stefan Bruhn (12-08-2001)
| Kommentar Fra : Stefan Bruhn |
Dato : 12-08-01 17:24 |
|
On Fri, 10 Aug 2001 09:01:46 +0200, "Stig Nørgaard Jepsen"
<stigen@mail.dk> wrote:
>og variablen indeholder:
>$execfunc = "testme("ABC");
>
>Så du'r følgende ikke:
>$funct();
>
>Da den vil se det som:
>testme("ABC")();
>
>En let løsning på det?
Hvorfor indeholder den så testme("ABC")?
Hvis den bare indeholdt testme kunne du jo gøre således:
$funct("ABC");
Mvh. / Regards Stefan Bruhn
--
<?$email = unserialize("a:15:{i:0;i:115;i:1;i:116;i:2;i:101;i:3;i:102
;i:4;i:97;i:5;i:110;i:6;i:64;i:7;i:98;i:8;i:114;i:9;i:117;i:10;i:104
;i:11;i:110;i:12;i:46;i:13;i:116;i:14;i:111;}");
for ($i=0;$i<=15;$i++) {echo chr($email[$i]);}?>
| |
|
|