Php 是否可以将参数传递给assoc数组?
考虑这样一个数组:Php 是否可以将参数传递给assoc数组?,php,parameter-passing,Php,Parameter Passing,考虑这样一个数组: ... "key1" => some_call("val1", $params), "key2" => some_call("val1", $params), ... <?php function some_call($arg,$params) { echo "$arg: ",count($params),"\n"; } $array = array( 'key1' => function($params) { some_cal
...
"key1" => some_call("val1", $params),
"key2" => some_call("val1", $params),
...
<?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));
现在我想在寻址数组条目时传递参数($params)
$x = $array['key1'] , $params ...
有没有办法做这样的事
更新
我为什么要这样做?
我使用的是codeigniter,在语言文件中是一个assoc数组,右边保存着预测语言中的文本。我想滥用这一点,想加载
电子邮件模板,其中我传递了一个参数,该参数保存模板中要替换的shell值
更新2
对于PHP5.2.*是否将$x作为数组
$x[] = $array['key1'] , $params ...
或
或连接的字符串
$x = $array['key1'] . $params ... // use the . to concat
由于PHP5.3,您可以使用匿名函数。也许你想要这样的东西:
...
"key1" => some_call("val1", $params),
"key2" => some_call("val1", $params),
...
<?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));
而不是匿名函数(即,如果您使用的是PHP5<5.3),那么您可以使用该函数来实现您想要的:
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));
你能澄清你的问题吗“key1”=>some_-call(“val1”,$params)
将some_-call(“val1”,$params)
的返回值添加到数组中。如果您解释了您试图用代码实现的目标,这会有所帮助。。。也许有一个更简单的解决方案(可能不是参数部分)。我可以在5.2.1版本上安装/插入该功能吗?你可以使用create\u函数
,但你不会。也可以定义普通的非lambda函数。另一个变体是使用将PHP5.3源代码编译为PHP5.2源代码。但我认为这还不够稳定。在实际代码中使用:'key1'=>create_函数('$params','returnsome_调用('val1',$params);')。然后我可以直接访问结果