嗨,这是我做一些基本导航的代码。无论我做什么,当我传递参数"stranky"时,它总是打印"first else"。我也尝试过array_key_exist函数,但也没有成功。有什么想法吗?
if(isset($_GET["stranka"])) {
$page = $_GET["stranka"];
$povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
if (isset($povoleneStranky[$page])) {
$stranka = "$page.php";
include $stranka;
echo $page;
} else {
include ('vsichni.php');
echo "first else <br>";
}
else {
include ('vsichni.php');
echo "second else";
}
您可以将代码简化为:
$povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
if (isset($_GET["stranka"]) && in_array($_GET["stranka"], $povoleneStranky)) {
$stranka = $_GET["stranka"] . ".php";
include $stranka;
echo $_GET["stranka"];
} else {
include ('vsichni.php');
}
检查这是否有效。
解决方案2-更优化的解决方案:
$povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
$stranka = 'vsichni.php';
if (isset($_GET["stranka"]) && in_array($_GET["stranka"], $povoleneStranky)) {
$stranka = $_GET["stranka"] . ".php";
}
include $stranka;
数组没有"string"索引/键,只有数字,其中的项都是字符串值,因此使用in_array()
是更好的检查方法。
if (isset($povoleneStranky[$page])) {
应该是
if (in_array($page, $povoleneStranky)) {
除非$_GET["stranka"]
有一个数值,在这种情况下,我的答案是无效的。
问题是您正在使用数组$povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
这个数组在php array([0]=vsichni[1]=>vecery[2]=>pridej_vecer[3]=>uprav_index);
中有点像这样
所以你可以让它总是返回run else,因为它从来没有找到$povoleneStranky[$page]
,你可以尝试isset($povoleneStranky[0])
首先关闭
if(isset($_GET["stranka"])) {
$page = $_GET["stranka"];
$povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
if (isset($povoleneStranky[$page])) {
$stranka = "$page.php";
include $stranka;
echo $page;
} else {
include ('vsichni.php');
echo "first else <br>";
}
}
else {
include ('vsichni.php');
echo "second else";
}
因为现在就像有人说的那样,你不可能拥有另外两个。还有var
$povolenestranky
在你的情况下不是多维数组,你试图获得
$povolenestranky[$page]
如果页面是字符串,则维奇不存在。