php-iset数组总是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";
}

您可以将代码简化为:

$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]

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