2015-11-26 2 views
0

Привет, это мой код, чтобы сделать базовую навигацию. Независимо от того, что я делаю, когда я передаю параметр «stranky», он всегда печатает «first else». Я также попробовал функцию array_key_exist, также без везения. Есть идеи? неphp isset array всегда false

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"; 
} 
+1

'' stranky ''! ==' "stranka" ' –

+3

У вас не может быть 2x else. – Rizier123

+0

Покажите нам код вашей «формы» HTML, если таковой имеется. – RockMyAlgorithm

ответ

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; 
+0

Да, это работает. Итак, isset не подходит для проверки значения в массиве? – Houdasek

+0

'isset' проверяет смещение в массиве. Мы должны использовать 'in_array' для проверки значений массива. –

+0

О, я не знал, что .. очень много – Houdasek

0

Массив имеет «строка» индексы/ключи, только числовые и предметы внутри него все строковые значения, поэтому использование in_array() это лучший способ проверить.

if (isset($povoleneStranky[$page])) { 

должен быть

if (in_array($page, $povoleneStranky)) { 

... если $_GET["stranka"] не имеет числовое значение, в этом случае мой ответ недействителен.

0

проблема в том, что вы использованияКонтактная массив $povoleneStranky = array("vsichni", "vecery", "pridej_vecer", "uprav_index"); этот массив somethig как это в PHP array([0]=vsichni[1]=>vecery[2]=>pridej_vecer[3]=>uprav_index);

так что вы можете так всегда возврат бежать иначе, потому что он никогда не находит $povoleneStranky[$page], вы можете попробовать isset($povoleneStranky[0])

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 других. Также вар

$povolenestranky 

не в вашем случае mulidimensional массива, и вы пытаетесь получить

$povolenestranky[$page] 

которым не существует, если страница является строкой.

Смежные вопросы