在php数组中定义并执行函数

时间:2017-09-19 06:33:42

标签: php arrays

如何在数组

中定义和执行函数

例如我有一个数组

    $a="a";
    $b="b";
    $c="c"; 
    $array=array(
         "a"=>$a,
         "b"=>$b,
         "c"=>function($c){
                //do something 
              return output
          }      
    )

这里的输出应该是

Array
(
    [a] => a
    [b] => b
    [c] => "new value of c"

)

但实际上我正在

Array
(
    [a] => a
    [b] => b
    [c] => Closure Object
        (
            [parameter] => Array
                (
                    [$c] => 
                )    
        )    
)

注意:我可以在此之外定义一个函数并调用该函数但我不想这样做

2 个答案:

答案 0 :(得分:3)

由于closure是一个函数,因此必须执行才能获得响应。以下是执行和返回响应的方法

$c = 'awesome';
$array=array(
     "a"=>'test2',
     "b"=> 'test',
     "c"=> call_user_func(function() use ($c) {
            //do something 
          return $c;
      })      
);
var_dump($array);//array(3) { ["a"]=> string(5) "test2" ["b"]=> string(4) "test" ["c"]=> string(7) "awesome" }

答案 1 :(得分:0)

您可以直接分配给某个变量并调用该函数并传递参数,而不是在数组中执行该函数,然后您可以在数组中使用该指定的变量。

$a="a";
$b="b";
$c="c";
$d = SomeFunction($c); <-- assigning to variable
$array=array(
     "a"=>$a,
     "b"=>$b,
     "c"=> $d    
)