php isset 数组始终为 false
php isset array is always false
你好,这是我用来做一些基本导航的代码。无论我做什么,当我传递参数 "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";
}
数组没有"string"indexes/keys,只有数值,里面的项都是字符串值,所以用in_array()
检查比较好
if (isset($povoleneStranky[$page])) {
应该是
if (in_array($page, $povoleneStranky)) {
...除非$_GET["stranka"]
有一个数值,在这种情况下我的回答是无效的。
您可以将代码缩减为:
$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;
问题是您正在使用数组 $povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
这个数组在 php array([0]=vsichni[1]=>vecery[2]=>pridej_vecer[3]=>uprav_index);
中是这样的
所以你总是可以 return 运行 否则因为它永远找不到 $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";
}
因为现在就像有人说你不能再有 2 个。
还有 var
$povolenestranky
在你的例子中不是多维数组,你试图得到
$povolenestranky[$page]
如果页面是字符串,则不存在。
你好,这是我用来做一些基本导航的代码。无论我做什么,当我传递参数 "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";
}
数组没有"string"indexes/keys,只有数值,里面的项都是字符串值,所以用in_array()
检查比较好
if (isset($povoleneStranky[$page])) {
应该是
if (in_array($page, $povoleneStranky)) {
...除非$_GET["stranka"]
有一个数值,在这种情况下我的回答是无效的。
您可以将代码缩减为:
$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;
问题是您正在使用数组 $povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index");
这个数组在 php array([0]=vsichni[1]=>vecery[2]=>pridej_vecer[3]=>uprav_index);
所以你总是可以 return 运行 否则因为它永远找不到 $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";
}
因为现在就像有人说你不能再有 2 个。 还有 var
$povolenestranky
在你的例子中不是多维数组,你试图得到
$povolenestranky[$page]
如果页面是字符串,则不存在。