在函数中赋值后变量的值没有改变

Value of variable has not changed after assignment in function

我这样设置 $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>

我做错了什么?

两个$fe变量不是同一个变量。这个:

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

... 仅存在于该函数中,它与另一个全局函数无关,因此 $fe 对于最后一个代码块仍然为 0。

一个快速的解决方案是将该变量声明为相同的全局变量,使用 global keyword:

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

但是有人可能想知道为什么你真的想在一个函数中这样做。