Archief - PHP: Functions

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

0n3Liner

Legacy Member
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?

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

functie ak()
echo "hierkomttekst";

EdMeister

Legacy Member
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

Legacy Member
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]

Legacy Member
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:
PHP:
function telop($waarde1,$waarde2) {
   $resultaat = $waarde1 + $waarde2;
   return $resultaat;
}


Zo roep je ze aan:
PHP:
$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

Legacy Member
0n3Liner zei:
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
PHP:
functie1: 
$nt = eregi_replace("<% A_K %>", a_k(), $nt); 

functie ak() {
return "hierkomttekst";
}

killgore

Legacy Member
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

Legacy Member
[Scratch] zei:
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

Legacy Member
Matrix zei:
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

Legacy Member
Matrix zei:
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:

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

zal iets geven als:
Code:
1Teller:
2Teller:
3Teller:
4Teller:
5Teller:

0n3Liner

Legacy Member
mmja, ok bedankt voor de replies, kgaan daar es wa verder onderzoek mee doen, had het nu al opgelsot op andere manier
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan