PDA

Volledige versie bekijken : PHP: Functions



0n3Liner
2 mei 2004, 20:23
Wel, ik roep nu in een fucntie een andere fucntie aan en dan roep ik deze functie weer ergens anders aan, maar nu is het probleem als ik in de eerste functie iets laat echo'en dan verschijnt dat dus niet op de juiste plek.... als ik die echo weghaal dan echo'et ie niks.
dus hoe doe ik dit nu?



functie1:
$nt = eregi_replace("<% A_K %>", a_k(), $nt);

functie ak()
echo "hierkomttekst";

EdMeister
2 mei 2004, 21:23
Waarom zou je in een eregi_replace-functie een functie gebruiken die iets echo't? :confused:

Als je met die 'echo' bedoelt 'een waarde uit die functie gebruiken in de nieuwe functie', zit je verkeerd. Dan moet je een return-statement gebruiken... ;)

0n3Liner
2 mei 2004, 22:00
kijk het probleem is ik heb de 2de functie nodig om die tekst uit de DB te halen, dan wil ik die gebruiken in andere functies om een stuk in een tekst te laten veranderen met die tekst uit de db

en ik wil die 2de functie meermaals gebruiken ^^

[Scratch]
3 mei 2004, 01:21
Ik denk dat je echo'n binnen functies best kan vermijden.

Ik los het altijd op met return $var. Op deze manier wijs je een waarde toe aan een variable door middel van je functie, zo kan je die var overal waar je wil gebruiken. Voorbeeld ...

Dit is de functie:


function telop($waarde1,$waarde2) {
$resultaat = $waarde1 + $waarde2;
return $resultaat;
}


Zo roep je ze aan:


$var1 = 5;
$var2 = 10;
$som = telop($var1, $var2); // HIER KEN JE HET RESULATAAT VAN DE FUNCTIE TOE AAN $SOM

// ERGENS ANDERS OP JE PAGINA ECHO JE DE WAARDE DIE JE SCRIPT TERUG GAF AAN $SOM
echo $som;


Ik hoop dat dit je iets of wat vooruit geholpen heeft :)

EdMeister
3 mei 2004, 10:48
kijk het probleem is ik heb de 2de functie nodig om die tekst uit de DB te halen, dan wil ik die gebruiken in andere functies om een stuk in een tekst te laten veranderen met die tekst uit de db

en ik wil die 2de functie meermaals gebruiken ^^
Dus moet je een return-statement gebruiken, zoals gezegd (en zoals geïllustreerd is door Scratch).

Dus

functie1:
$nt = eregi_replace("<% A_K %>", a_k(), $nt);

functie ak() {
return "hierkomttekst";
}

killgore
3 mei 2004, 17:33
ehm :crazy:

functie defineer je onder ak(), maar roep je aan onder a_k (of typfoutje hier?
gebruik preg_replace ipv ereg_replace (is sneller).

vo de rest zie ek niet in waarom je hier regex gebruikt? str_replace should do the trick :)

Venn
3 mei 2004, 17:46
']Ik denk dat je echo'n binnen functies best kan vermijden.
ik denk dat het soms een performantie winst kan zijn als je onmiddellijk een string echo't ipv ze door te geven, dan moet er niets geadresseert worden, nadeel is je dat je met die functie voor de rest niet veel meer kan doen, als je die tekst terug door een functie wil halen zit je wel met een probleem

DarkBone
3 mei 2004, 18:33
ik denk dat het soms een performantie winst kan zijn als je onmiddellijk een string echo't ipv ze door te geven, dan moet er niets geadresseert worden, nadeel is je dat je met die functie voor de rest niet veel meer kan doen, als je die tekst terug door een functie wil halen zit je wel met een probleem
Moest het adresseren van 1 variabele zo'n grote invloed hebben op uw performance... dan zou het verdorie slecht gesteld zijn met PHP. Als ge al daarover gaat zitten tobben. 't Is ne da we hier applicaties maken die super/snel/stabiel moeten zijn en zo weinig mogelijk cpu/geheugen belasten ...

killgore
3 mei 2004, 18:54
ik denk dat het soms een performantie winst kan zijn als je onmiddellijk een string echo't ipv ze door te geven, dan moet er niets geadresseert worden, nadeel is je dat je met die functie voor de rest niet veel meer kan doen, als je die tekst terug door een functie wil halen zit je wel met een probleem
Bah, echo's en return's verschillen enorm, een return kan je eigenlijk als gewone var beschouwen, een echo niet.

Echo's geven ook ongewenste resultaten, zo zal dit (gebaseerd op vb. uit een andere thread hier)niet het gewenste effect geven:



function tel()
{
static $i = 0;
echo $i++;
}
for($a=0;$a<5;$a++)
{
echo "Teller: ".tel()."<br />";
}


zal iets geven als:


1Teller:
2Teller:
3Teller:
4Teller:
5Teller:

0n3Liner
3 mei 2004, 21:00
mmja, ok bedankt voor de replies, kgaan daar es wa verder onderzoek mee doen, had het nu al opgelsot op andere manier