如何在另一个函数中访问变量?

时间:2014-10-01 20:38:15

标签: php variables globals

我有两个打印某些值的函数。我需要在第二个函数中使用变量$ 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>';
  }

}

5 个答案:

答案 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;