是否可以将参数传递给assoc数组?

时间:2010-10-07 13:36:45

标签: php parameter-passing

想一下像这样的数组:

...
"key1" => some_call("val1", $params),
"key2" => some_call("val1", $params),
...

现在我想在处理我的数组条目时传递参数($ params)

$x = $array['key1'] , $params ... 

有什么方法可以做这样的事情吗?

更新

我为什么要这样做? 我正在使用codeigniter,并且在语言文件中是一个assoc数组,其中右侧以预测语言保存文本。我想滥用这一点,并希望加载 电子邮件模板,我传递一个参数,该参数包含在模板中替换shell的值。

更新2

for php 5.2。*

3 个答案:

答案 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