#php #if-statement
#php #if-оператор
Вопрос:
Я пытаюсь запустить функцию, но только на определенных страницах. Я думал, что это будет нормально…
$allowed_pages = array('/admin/update.php', '/admin/system.php', '/admin/install.php');
if($_SERVER['SCRIPT_NAME'] == $allowed_pages) {
myCoolFuntion();
}
… но, похоже, он работает не так, как ожидалось, и myCoolFuntion()
выполняется независимо от того, на какой странице я нахожусь.
Если я выполняю эхо $_SERVER['SCRIPT_NAME']
на любой заданной странице, я вижу, что оно соответствует правильно (например, соответствует странице, указанной в массиве, /admin/update.php
как и ожидалось), и поэтому я знаю, что значения в массиве имеют правильный формат.
Что я делаю не так?
Ответ №1:
Основываясь на приведенном примере, я не вижу никакого способа, который myCoolFunction();
можно было бы выполнить.
$_SERVER['SCRIPT_NAME']
никогда не будет равно $allowed_pages
, потому что первое — это a string
, а второе — an array
.
Вместо представленного кода используйте функцию, например, in_array
для проверки того, что SCRIPT_NAME
значение находится в массиве:
$allowed_pages = array('/admin/update.php', '/admin/system.php', '/admin/install.php');
if (in_array($_SERVER['SCRIPT_NAME'], $allowed_pages)) {
myCoolFunction();
} else {
echo 'Not found in array';
}
in_array
определяется таким образом:
Проверяет, существует ли значение в массиве
Более подробная информация об in_array
этом в официальных документах.