Pregunta

Me gustaría escribir una función que (entre otras cosas) acepte un número variable de argumentos y luego los pase a sprintf ().

Por ejemplo:

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

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

¿Cómo hago esto en PHP?

¿Fue útil?

Solución

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 temporal $ args es necesaria, ya que func_get_args no se puede usar en la lista de argumentos de una función en versiones de PHP anteriores a 5.3.

Otros consejos

utilice una combinación de func_get_args y 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 (); y func_get_arg (i) para recuperar el argumento

Aquí está el camino:

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

básicamente, declara su función como de costumbre, sin parámetros, luego llama a func_num_args () para averiguar cuántos argumentos le pasaron, y luego obtiene cada uno llamando a func_get_arg () o func_get_args (). Eso es fácil :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top