dabear Skrevet 25. juli 2006 Del Skrevet 25. juli 2006 (endret) Hepp, noen som har fått til dette? Lag en funksjon som tar imot et uendelig antall argument ved referanse, og endre disse verdiene. Demonstrasjon ved et statisk antall argument: <?php function doSomething(&$var1,&$var2) { $var1='yo'; $var2 = 'Hello'; } $var1 = 'her blir jeg satt'; $var2 = 'me too..'; //$var1 er nå 'yo' og $var2 er 'Hello' doSomething($var1,$var2); ?> Men dette krever at jeg spesifiserer hvor mange antall variabler jeg ønsker i funksjonen. Det er viktig at koden funker i php4 såvell som i php5, og da kan ikke dette func_get_args brukes. array func_get_args ( void ) Returns an array in which each element is a copy of the corresponding member of the current user-defined function's argument list. func_get_args() will generate a warning if called from outside of a function definition. This function cannot be used directly as a function parameter. Instead, its result may be assigned to a variable, which can then be passed to the function. Note: This function returns a copy of the passed arguments only, and does not account for default (non-passed) arguments. Noen ideer? Endret 25. juli 2006 av dabear Lenke til kommentar
xqus Skrevet 25. juli 2006 Del Skrevet 25. juli 2006 Hva med at funksjonen bare tar et array som argument? Lenke til kommentar
dabear Skrevet 25. juli 2006 Forfatter Del Skrevet 25. juli 2006 Hva med at funksjonen bare tar et array som argument? 6556100[/snapback] Jupp, det er det jeg gjør nå, men skulle funnet en annen løsning.. <?php //tenkt eksempel, disse kommer fks fra post/get $first = ''; $second =''; $vals = array_map('quote_smart', array($first, $second)); $templ = 'SELECT * FROM table_name WHERE %s=%s'; $sql = vsprintf($templ, $vals); // eller $first = ''; $second =''; $first = quote_smart($first); $second= quote_smart($second); $templ = 'SELECT * FROM table_name WHERE %s=%s'; $sql = sprintf($templ, $first, $second); ?> Det hadde vært enklere om jeg kunne skrevet en funksjon escape som tok imot et uendelig antall med argument, slik at jeg kunne skrevet: <?php $first = ''; $second =''; escape($first, $second /*[,flere..]*/); $templ = 'SELECT * FROM table_name WHERE %s=%s'; $sql = sprintf($templ, $first, $second); ?> Jaja, kanskje jeg skulle sjekka at jeg får det jeg vil fra arrayet og deretter slice det og putte innholdet i vsprintf istedet? Høres enklere ut.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå