是否需要将变量(带数组数据)传递给函数,而不必在每次使用函数时都将其用作参数?
我的情况是我为表单生成了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行代码。
答案 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
虽然,应该避免。