这就是我所拥有的:
在包含文件的文件中:
global $numTrax;
然后我在html页面中调用一个函数,它只是播放器的html,但是,此时我想要输入它播放的曲目数量:
audioPlayer(5);
,功能是
function audioPlayer($numTrax)
{
echo ' ... all html ...';
// if i echo $numtrax here it shows 5
// because function i used was audioPlayer(5)
// so, i'm reassigning it using $numTrax = $numTrax
// then next function: audioPlaylist($user_id,$username,$numTrax); has $numTrax
// but the problem is it's not showing it there
$numTrax = $numTrax;
return $numTrax;
}
然后我在页面下方有另一个函数创建了轨道列表,并按如下方式调用:
audioPlaylist($user_id,$username,$numTrax);
问题是$numTrax
没有通过
问题我可以让变量$numTrax
通过函数吗?
答案 0 :(得分:2)
就像我上面说的那样,从不使用global
。这是处理变量的错误方法。
我猜你想要的东西是:
$numTrax = audioPlayer(5);
audioPlayList($user_id, $username, $numTrax);
答案 1 :(得分:0)
你需要在函数中定义变量,如
global $numTrax;
使用全局变量。否则,它将创建一个具有局部范围的新变量。
答案 2 :(得分:0)
将您的功能更改为:
function audioPlayer($newNumTrax)
{
global $numTrax;
echo ' ... all html ...';
$numTrax = $newNumTrax;
}
要在函数中访问或重新分配全局变量,您需要使用global
关键字bring it into scope。函数的参数应该与全局变量具有不同的名称,以免使它们混淆。然后,只需将参数变量的值赋给全局变量。
按照你如何调用它,这个函数不需要返回任何东西。它只是设置全局变量的值。
对于audioPlaylist
调用,没有理由将$numTrax
作为参数传递。它是一个全局变量,因此所有函数都可以访问它。定义如下函数:
function audioPlaylist($user_id, $username)
{
global $numTrax; #now you can use the global variable in this function
#rest of function here
}
......并且这样称呼它:
audioPlaylist($user_id, $username);
请注意,使用global
可能不是设计程序的好策略。我建议将变量传递给函数而不是依赖于全局变量。如果你的功能太笨重,可以将它们分解成更小的功能。
答案 3 :(得分:0)
不要在函数中使用相同的变量
尝试,
function audioPlayer($nT)
{
echo ' ... all html ...';
$numTrax = $nT;
return $numTrax;
}
答案 4 :(得分:0)
如果我猜错了,我认为你错误地使用了关键字global
。
中的分配
$numTrax = $numTrax;
function audioPlayer($numTrax)
{
$numTrax = $numTrax;
return $numTrax;
}
实际上是将本地变量$numTrax
的值分配给本身。
您必须将全局变量定义为:
$numTrax = null ;
在您的功能中,您必须避免阴影全局重命名参数,并且声明全局变量(因此没有新的本地变量已创建),例如:
function audioPlayer($paramNumTrax)
{
global $numTrax; // declare it exist a global var somewhere called $numTrax
$numTrax = $paramNumTrax; // Asign the local value to the global variable
return $paramNumTrax;
}
更多信息:http://php.net/manual/en/language.variables.scope.php
(在某些情况下可能发生:“在函数外部使用全局关键字不是错误。如果文件包含在函数内部,则可以使用它。”。不知道如果这是你的情况)
希望这有帮助。
答案 5 :(得分:0)
默认情况下,变量在PHP中不是全局变量。您必须在要使用它们的每个函数中将它们声明为,或者设置$GLOBALS['numTrax']
。
尽管如此,由于几个原因,依赖全局变量通常被认为是一个非常糟糕的主意。大多数涉及“远距离行动”,或依赖于现在十倍难以改变而不是编码到界面的实施细节。 (一般禁止有点过于宽泛,但在使用它们的情况下95% * 不需要全局变量。)
* (完全编号,因为我没有关于它的统计数据。但是知道它太高了。:P)