想一下像这样的数组:
...
"key1" => some_call("val1", $params),
"key2" => some_call("val1", $params),
...
现在我想在处理我的数组条目时传递参数($ params)
$x = $array['key1'] , $params ...
有什么方法可以做这样的事情吗?
更新
我为什么要这样做? 我正在使用codeigniter,并且在语言文件中是一个assoc数组,其中右侧以预测语言保存文本。我想滥用这一点,并希望加载 电子邮件模板,我传递一个参数,该参数包含在模板中替换shell的值。
更新2
for php 5.2。*
答案 0 :(得分:4)
从PHP 5.3开始,您可以使用匿名函数。也许你想要这样的东西:
<?php
function some_call($arg,$params)
{
echo "$arg: ",count($params),"\n";
}
$array = array(
'key1' => function($params) { some_call('val1',$params); },
'key2' => function($params) { some_call('val1',$params); }
);
$array['key1'](array(1,2,3));
答案 1 :(得分:3)
而不是匿名函数(即如果您使用的是PHP5&lt; 5.3),那么您可以使用create_function()函数来实现您想要的功能:
function some_call($arg, $params)
{
echo $arg, ': ', count($params), "\n";
}
$array = array(
'key1' => create_function('$params', 'some_call("val1", $params);'),
'key2' => create_function('$params', 'some_call("val2", $params);'),
);
$array['key1'](array(1,2,3));
答案 2 :(得分:1)
让$ x成为数组吗?
$x[] = $array['key1'] , $params ...
或
$x = array($array['key1'] , $params ... )
或串联字符串
$x = $array['key1'] . $params ... // use the . to concat