嗨,这是我做一些基本导航的代码。无论我做什么,当我传递参数“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";
}
答案 0 :(得分:0)
该数组没有“字符串”索引/键,只有数字,其中的项都是字符串值,因此使用in_array()
是更好的检查方法。
if (isset($povoleneStranky[$page])) {
应该是
if (in_array($page, $povoleneStranky)) {
...除非$_GET["stranka"]
有数值,否则我的答案无效。
答案 1 :(得分:0)
您可以将代码缩减为:
$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;
答案 2 :(得分:0)
问题是您正在使用数组$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])
答案 3 :(得分:0)
首先是关闭的parantheses
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";
}
因为现在就像有人说你不能拥有2个。 var
$povolenestranky
不是你的情况下多维数组,你试图得到
$povolenestranky[$page]
如果页面是字符串,则不存在。