PHP - 将参数作为数组传递给函数,而不必定义为参数

时间:2014-09-08 01:36:59

标签: php function function-parameter

是否需要将变量(带数组数据)传递给函数,而不必在每次使用函数时都将其用作参数?

我的情况是我为表单生成了UI元素。现在,如果我定义输入的名称,我得到的字段按设计工作,但我每次都必须传递两个变量。

功能定义:

function getDecision($name,$game,$answer) { 
  // lots of code not very relevant 
}

理想情况下,我想在函数内部传递$game$answer变量,以获取依赖于它们的内容。我正在使用代码点火器,$game变量在页面加载时传递给视图。仅当$answer已通过或定义时,$game变量才能在函数内定义。

该功能的当前用途:

getDecision('company_name', $game, $answer);

功能的理想用途(更简单的使用):

getDecision('company_name');

如果我还需要定义其他内容,请告诉我,我不想显示所有代码,因为有近100行代码。

2 个答案:

答案 0 :(得分:0)

使用闭包这是一个不错的选择 - http://php.net/manual/en/functions.anonymous.php,特别是' 使用'构造

#!/usr/bin/env php 
<?php

function getDecision($name, $game, $answer) {
  echo "$name : $game : $answer \n";
}

function main() {

  $my_game = "my game";
  $my_answer = "my answer";


  $getDecisionCaller = function($name) use ($my_game, $my_answer) {
    getDecision($name, $my_game, $my_answer);
  };  

  // Don't really need the line below, can simply use: $getDecisionCaller('company 0');
  getDecision('company 0', $my_game, $my_answer);

  $getDecisionCaller('company 1');
  $getDecisionCaller('company 2');
}

main();

?>

会给出输出

company 0 : my game : my answer 
company 1 : my game : my answer 
company 2 : my game : my answer

在上面的代码中我定义了getDecision($ name,$ game,$ answer),它只是打印出发送的值。 然后,我定义getDecisionCaller,它只接受$ name和一个参数,但使用 $ my_game,$ my_answer的值已定义。

注意 - &#39;使用&#39;构造需要绑定到的变量,并且不能通过字符串设置值。它会给出错误 - &#39;解析错误:解析错误,期待'&'' or&#34;变量(T_VARIABLE)&#34;&#39;&#39;&#39;

例如。你不能做下面的

$getDecisionCaller = function($name) use ('a game', 'an answer') {
  getDecision($name, $my_game, $my_answer);
};

希望,这有助于:)

答案 1 :(得分:0)

您可以使用全局变量来执行此操作。例如:

<?php

    $array = array();

    function test() {
        global $array;

        print_r($array);
    }

    function main() {
        test();
    }

    main();
?>

http://php.net/manual/en/language.variables.scope.php

虽然,应该避免。