У меня есть две функции, которые печатают некоторые значения. Мне нужно использовать переменную $ 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>';
}
}
Вы можете использовать глобальный охват:
Вот что вы хотите сделать:
$mv = 0;
function function1()
{
global $mv;
$mv = 'whatever';
//code
}
function function2()
{
global $mv;
// use $mv;
}
Вы должны заранее определить эту переменную ВНЕ любой функции, а затем вы можете использовать Global, чтобы получить ее для любой функции.
Вы можете передать его по ссылке. Например
function doSomething(&$mv) {
$mv = 1;
}
function doSomethingElse($mv) {
return $mv;
}
$mv = 0;
doSomething($mv);
echo doSomethingElse($mv); //Output: 1
Вы можете вернуть $ 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) {
......
}
Скорее всего, вы должны правильно использовать глобалы.
объявите переменную $ mv как глобальную, прежде чем присваивать ей значение в первой функции
global $mv;
$mv = $mobileprevRows[0][0];
используйте global в начале своей второй функции перед ее использованием
function printMobileCurr(&$mobilecurrresults) {
if (count($mobilecurrresults->getRows()) > 0) {
global $mv;