Значение переменной не изменилось после присвоения в функции

Я установил $fe переменная, как это:

<?php
$fe = 0;
echo '<font color="red">Alert! Site is still in development! Bugs will be fixed!<br>';
?>

<?php if ($_GET['p'] == "smoke") { ?>

<?php } elseif ($_GET['p'] == "heg") { ?>

<?php } elseif ($_GET['p'] == "flash") { ?>

<?php } elseif ($_GET['p'] == "molotov") { ?>

<?php } else { l(); } ?>

<?php function l() {
$fe = 1;
echo '<a href="../mirage?p=smoke">Smokes</a><br><a href="../mirage?p=heg">HEGs</a><br><a href="../mirage?p=flash">Flashes</a><br><a href="../mirage?p=molotov">Molotovs</a>';
} ?>

Но тогда в следующем коде if ($fe == 0) блок всегда выполняется независимо от параметра p было:

<div class="topleftcorner">
<?php
if ($fe == 0) {
echo '<a href="../mirage"><-- Back</a>';
} elseif ($fe == 1) {
echo '<a href="../../csgo"><-- Back</a>';
}
?>
</div>

Что я делаю неправильно?

0

Решение

Два $fe переменные не являются одной и той же переменной. Вот этот:

function l() {
$fe = 1;
//... etc
}

… существует только в этой функции, она не имеет ничего общего с другой, глобальной, и так $fe по-прежнему 0 для последнего блока кода.

Быстрое решение — объявить эту переменную как глобальную переменную с global ключевое слово:

function l() {
global $fe;
$fe = 1;
//... etc
}

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

4

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

Других решений пока нет …

По вопросам рекламы [email protected]