Question

J'aimerais écrire une fonction qui accepte (entre autres) un nombre variable d'arguments, puis les transmet à sprintf ().

Par exemple:

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

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

Comment puis-je faire cela en PHP?

Était-ce utile?

La solution

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);
}

La variable temporaire $ args est nécessaire car func_get_args ne peut pas être utilisé dans la liste des arguments d'une fonction dans les versions de PHP antérieures à la version 5.3.

Autres conseils

utilisez une combinaison de func_get_args et de call_user_func_array

function f($var) { // at least one argument
  $args = func_get_args();
  $s = call_user_func_array('sprintf', $args);
}

use $ numargs = func_num_args (); et func_get_arg (i) pour récupérer l'argument

Voici le chemin:

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

en gros, vous déclarez votre fonction comme d’habitude, sans paramètre, puis vous appelez func_num_args () pour connaître le nombre d’arguments qu’ils vous ont transmis, puis vous obtenez chacun en appelant func_get_arg () ou func_get_args (). C'est facile:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top