我试图将多个参数传递给包含sprintf()方法的自定义方法。我传递的参数将在sprintf()方法中使用。有没有办法做到这一点?我尝试了下面的代码,但“参数太少”。

<?php
function myMethod($text, $args)
{
    echo sprintf($text, $args);
}

myMethod('"%s" is "%s" method', 'This', 'my');
?>

最佳答案

使用vsprintf()而不是sprintf()是任何解决方案的核心,因为您将参数作为数组传递:

如果您使用的是PHP 5.6,并且可以使用variadics

function myMethod($text, ...$args)
{
    echo vsprintf($text, $args);
}

myMethod('"%s" is "%s" method', 'This', 'my');


否则func_get_args()是您的朋友:

function myMethod($text)
{
    $args = func_get_args();
    array_shift($args); // remove $text argument from the $args array
    echo vsprintf($text, $args);
}

myMethod('"%s" is "%s" method', 'This', 'my');

关于php - PHP-将多个参数传递给包含sprintf()的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28233931/

10-17 01:08