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]

如果页面是字符串,则不存在。