Passerer variabel argumentlisten til sprintf ()

stemmer
12

Jeg ønsker å skrive en funksjon som (blant annet) tar et variabelt antall argumenter og deretter sender dem til sprintf ().

For eksempel:

<?php
function some_func($var) {
  // ...
  $s = sprintf($var, ...arguments that were passed...);
  // ...
}

some_func(blah %d blah, $number);
?>

Hvordan gjør jeg dette i PHP?

Publisert på 22/10/2009 klokken 12:15
kilden bruker
På andre språk...                            


4 svar

stemmer
0

Bruk $ numargs = func_num_args (); og func_get_arg (i) for å hente argumentet

Svarte 22/10/2009 kl. 12:20
kilden bruker

stemmer
0

Her er måten:

http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list

utgangspunktet, erklærer du din funksjon som vanlig, uten parametere, så du ringe func_num_args () for å finne ut hvor mange argumenter de passerte deg, og så får du hver enkelt ved å ringe func_get_arg () eller func_get_args (). Det er enkelt :)

Svarte 22/10/2009 kl. 12:21
kilden bruker

stemmer
0

bruke en kombinasjon av func_get_argsogcall_user_func_array

function f($var) { // at least one argument
  $args = func_get_args();
  $s = call_user_func_array('sprintf', $args);
}
Svarte 22/10/2009 kl. 12:23
kilden bruker

stemmer
22

function some_func() {
    $args = func_get_args();
    $s    = call_user_func_array('sprintf', $args);
}

// or

function some_func() {
    $args = func_get_args();
    $var  = array_shift($args);
    $s    = vsprintf($var, $args);
}

Den $argsmidlertidige variabelen er nødvendig, fordi func_get_argskan ikke brukes i argumenter liste av en funksjon i PHP versjoner før 5.3.

Svarte 22/10/2009 kl. 12:23
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more