我将$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 :(得分:4)
两个$fe
变量不是同一个变量。这一个:
function l() {
$fe = 1;
//... etc
}
...仅存在于该函数中,它与另一个全局函数无关,因此$fe
对于最后一个代码块仍为0。
快速解决方案是使用global
keyword将该变量声明为相同的全局变量:
function l() {
global $fe;
$fe = 1;
//... etc
}
但有人可能想知道为什么你真的想在一个函数中这样做。