我似乎记得在PHP中有一种方法可以将数组作为函数的参数列表传递,将数组解引用为标准func($arg1, $arg2)方式.但是现在我迷失了怎么做.我记得通过引用传递的方式,如何"传递"传入的参数...但不是如何将数组取消列表到参数列表.
它可能很简单func(&$myArgs),但我很确定不是这样.但是,遗憾的是,到目前为止,php.net手册尚未透露任何内容.并非我在过去一年左右不得不使用这一特定功能.
我想在函数调用中使用数组中的值作为独立参数.例:
// Values "a" and "b"
$arr = array("alpha", "beta");
// ... are to be inserted as $a and $b.
my_func($a, $b)
function my_func($a,$b=NULL) { echo "{$a} - {$b}"; }
Run Code Online (Sandbox Code Playgroud)
数组中的值的数量是未知的.
可能的解决方案:
我可以将数组作为单个参数传递 - 但更喜欢传递多个独立的函数参数.
implode()将数组转换为逗号分隔的字符串.(失败,因为它只是一个字符串.)
使用单个参数:
$str = "'a','b'";
function goat($str); // $str needs to be parsed as two independent values/variables.
Run Code Online (Sandbox Code Playgroud)用eval()吗?
遍历阵列?
建议表示赞赏.谢谢.
C# 中有没有办法将单个数组作为单独的参数(参数)传递给函数?
给出以下超级简化的示例:
Func<int, int, int> sum = (int a, int b) => { return a + b; };
// sum(1, 2); This would work and return 3
sum([1,2]); // This is how I would like to call it
Run Code Online (Sandbox Code Playgroud)
有没有办法让最后一行工作?
注意:我知道您可以让委托将单个参数int[]作为参数,但在我的实际用例中,修改委托是不可能的。
注 2:在实际用例中,参数的类型不同。int它可以是、string、object等的混合。
如果有帮助的话,在 PHP 中这可以通过call_user_func_array(). 例子
更新:真正的用例是我想要一个接收委托和所有必需参数的函数。因此,不必写出所有不同的情况,如下所示:
public void OneParam<T1, TOut>(Func<T1, TOut> func, T1 p1)
{
// Do some fancy stuff before calling
func.Invoke(p1);
}
public void …Run Code Online (Sandbox Code Playgroud)