php isset数组总是为false

时间:2015-11-26 09:48:14

标签: php arrays isset

嗨,这是我做一些基本导航的代码。无论我做什么,当我传递参数“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";
}

4 个答案:

答案 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]

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