我有两个打印某些值的函数。我需要在第二个函数中使用变量$ mv。但是,$ mv只能在第一个函数中定义。我已经尝试了所有类型的PHP全局示例,但没有一个允许在第二个函数中使用或可见或可访问$ mv变量。
function printMobilePrev(&$mobileprevresults) {
if (count($mobileprevresults->getRows()) > 0) {
$mv = $mobileprevRows[0][0];
$mobileprevRows = $mobileprevresults->getRows();
echo '<p>Previous period (sessions): '.$mobileprevRows[0][0].'..............................';
} else {
print '<p>No results found.</p>';
}
}
function printMobileCurr(&$mobilecurrresults) {
if (count($mobilecurrresults->getRows()) > 0) {
$mobdiff = ($mobcur - $mv);
$mobpctchg = ($mobdiff / $mobprev) * 100;
$mobilecurrRows = $mobilecurrresults->getRows();
echo '<p>Previous period (sessions): '.$mobileprevRows[0][0].'..............................';
echo '<p>Previous period (sessions): '.$mv.'..............................';
echo '<p>Current period (sessions): '.$mobilecurrRows[0][0].'..............................';
if ($mobdiff > 0){
echo '<p>Percent increase: '.$mobpctchg.'..............................';
} else {
echo '<p>Percent decrease: '.$mobpctchg.'..............................';
}
} else {
print '<p>No results found.</p>';
}
}
答案 0 :(得分:1)
您可以使用 global scope :
这就是你想要做的事情:
$mv = 0;
function function1()
{
global $mv;
$mv = 'whatever';
//code
}
function function2()
{
global $mv;
// use $mv;
}
答案 1 :(得分:0)
你必须预定义变量OUTSIDE任何函数,然后你可以使用Global来获取任何函数。
答案 2 :(得分:0)
您可以通过引用传递它。例如
function doSomething(&$mv) {
$mv = 1;
}
function doSomethingElse($mv) {
return $mv;
}
$mv = 0;
doSomething($mv);
echo doSomethingElse($mv); //Output: 1
答案 3 :(得分:0)
您可以在打印后返回$ mv并将其保存在var中以传递给下一个函数:
$printMobilePrev = printMobilePrev();
function printMobilePrev(&$mobileprevresults) {
$mv = $mobileprevRows[0][0];
...
print '<p>No results found.</p>';
return $mv;
...
}
$printMobileCurr = printMobileCurr(&$mobilecurrresults,$mv);
function printMobileCurr(&$mobilecurrresults,$mv) {
......
}
答案 4 :(得分:0)
很可能你必须正确使用全局变量。
在将第一个函数
上的值赋予全局之前,将$ mv变量声明为全局变量global $mv;
$mv = $mobileprevRows[0][0];
在使用它之前在第二个函数的开头使用global
function printMobileCurr(&$mobilecurrresults) {
if (count($mobilecurrresults->getRows()) > 0) {
global $mv;