Как я могу получить доступ к переменной внутри другой функции?

У меня есть две функции, которые печатают некоторые значения. Мне нужно использовать переменную $ 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

Решение

Вы можете использовать глобальный охват:

Вот что вы хотите сделать:

$mv = 0;

function function1()
{
global $mv;
$mv = 'whatever';
//code
}

function function2()
{
global $mv;
// use $mv;
}
1

Другие решения

Вы должны заранее определить эту переменную ВНЕ любой функции, а затем вы можете использовать Global, чтобы получить ее для любой функции.

0

Вы можете передать его по ссылке. Например

function doSomething(&$mv) {
$mv = 1;
}

function doSomethingElse($mv) {
return $mv;
}

$mv = 0;
doSomething($mv);
echo doSomethingElse($mv); //Output: 1
0

Вы можете вернуть $ mv после печати и сохранить его в переменной для перехода к следующей функции:

$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) {
......
}
0

Скорее всего, вы должны правильно использовать глобалы.

объявите переменную $ mv как глобальную, прежде чем присваивать ей значение в первой функции

global $mv;
$mv = $mobileprevRows[0][0];

используйте global в начале своей второй функции перед ее использованием

function printMobileCurr(&$mobilecurrresults) {
if (count($mobilecurrresults->getRows()) > 0) {
global $mv;
0
По вопросам рекламы [email protected]