Php 将数据传递到函数中
好吧,我知道这是超基本的,我应该知道如何做到这一点,但我正在空白,并有困难在谷歌找到答案。例如,我有一个包含变量数组的includePhp 将数据传递到函数中,php,arrays,function,global-variables,Php,Arrays,Function,Global Variables,好吧,我知道这是超基本的,我应该知道如何做到这一点,但我正在空白,并有困难在谷歌找到答案。例如,我有一个包含变量数组的include $phrases["text"][1] = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"; $phrases["mp3"][1] = "http://example.com/file.mp3"; 然后是一个获取变量的函数: function return_ph
$phrases["text"][1] = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?";
$phrases["mp3"][1] = "http://example.com/file.mp3";
然后是一个获取变量的函数:
function return_phrase($phrase_name="", $fallback="",$default ="text"){
$next= (isset($default) && $default =="mp3") ? 'text' : 'mp3';
if(isset($tts_phrases[$default][$phrase_name])){
return $phrases[$default][$phrase_name]);
}
else if(isset($tts_phrases[$next][$phrase_name])){
return $phrases[$next][$phrase_name]);
}
else{
return $fallback;
}
}
问题是,
$phrases
数组没有被发送到函数。我可以将文件包含在函数本身中,但我知道这样做是错误的。我想我需要使用$global,只是不知道如何使用 方法1:将$phrases、$tts\u phrases作为参数传递
function return_phrase(array $phrases, array $ttphrases, $phrase_name="", $fallback="",$default ="text"){
$next= (isset($default) && $default =="mp3") ? 'text' : 'mp3';
if(isset($tts_phrases[$default][$phrase_name])){
return $phrases[$default][$phrase_name]);
}
else if(isset($tts_phrases[$next][$phrase_name])){
return $phrases[$next][$phrase_name]);
}
else{
return $fallback;
}
}
方法2:使$phrases、$tts\u词组成为全局(坏!)
使用全局变量是一个快速而简单的解决方案,但一旦应用程序变得更大,它们就变得很难跟踪。例如,以我在工作中必须处理的这个遗留代码片段为例:
function foo() {
global $mysqldsn, $ldapdsn, $autologout_timer, $isMobileDevice, logout_fail_limit, $logout_fail_window, $lang, $project_contact_email, $project_contact_name ... (50 or 60 more global variables following)
...
}
任何时候,当我看到一个页面,它只是把这些变量中的一个从稀薄的空气中拉出来,我必须控制整个项目,并确保每一个小的变化都不会弄乱整个应用程序。当您将变量保持在局部范围内时,您确切地知道您正在更改什么。只需添加
global$phrases,$tts\u phrases代码>作为函数的第一行。哦,请仔细阅读手册。还有$tts_短语
,您可能还想解释为什么全局
不好。实际上$tts_短语
是唯一的数组。我正试着移除。我有一个问题,我如何调用我尝试返回的函数(短语('1','somefallback'),但得到传递给tts的错误参数1\u短语()必须是数组返回短语($tts\u短语,'1','somefallback')
谢谢,刚刚计算出来:)
function foo() {
global $mysqldsn, $ldapdsn, $autologout_timer, $isMobileDevice, logout_fail_limit, $logout_fail_window, $lang, $project_contact_email, $project_contact_name ... (50 or 60 more global variables following)
...
}