我尝试过常规函数和call_user_function,它们在函数调用后到达下一行之前都没有完成执行。人们用什么代替?我应该为我想要运行的每个“功能”包含一个单独的php文件吗?
编辑:
$IDNum = 0;
$restartButtonIDName;
$playButtonIDName;
$audioPlayerIDName;
$MP3AudioSourceIDName;
$OGGAudioSourceIDName;
$resultingTextIDName;
$currentTimeIDName;
$checkOffsetIDName;
call_user_func('setIDNames');
function setIDNames() {
echo "called setIDNames <br />";
call_user_func('incIDNums');
$restartButtonIDName = "restartButton".$IDNum;
$playButtonIDName = "playButton".$IDNum;
$audioPlayerIDName = "audioPlayer".$IDNum;
$MP3AudioSourceIDName = "MP3AudioSource".$IDNum;
$OGGAudioSourceIDName = "OGGAudioSource".$IDNum;
$resultingTextIDName = "resultingText".$IDNum;
$currentTimeIDName = "currentTime".$IDNum;
$checkOffsetIDName = "checkOffset".$IDNum;
}
function incIDNums(){
echo "called setIDNums <br />";
$IDNum += 1;
}
echo $restartButtonIDName." test<br />"; // echos "test" not the resulting name
?>
答案 0 :(得分:3)
函数内部访问的变量与函数外部的变量或其他函数不同,除非您在函数内部声明了带有global
语句的变量。
$IDNum = 0;
incIDNums();
echo $IDNum; // Will echo 1
function incIDNums(){
global $IDNum;
echo "called setIDNums <br />";
$IDNum += 1;
}
它通常被认为是糟糕的风格,严重依赖于全局变量,因为它损害了函数的通用性。该函数应通过参数获取其输入,并使用return
将结果作为值发送。如果需要返回多个结果,可以将它们打包成数组,或者使用已更新的参考参数。
答案 1 :(得分:1)
你可能遇到的问题可能是由于变量的范围,请注意函数内部变量的生命周期,直到函数处于活动状态才能对全局变量产生影响,而这些全局变量不需要在函数内部进行全局变量功能如:
function setIDNames() {
global $restartButtonIDName ,$playButtonIDName ,$audioPlayerIDName ...;//All variables you wanna use saperated by comma.
//Your code
}