Мне было интересно, есть ли у меня такая функция:
function isAdmin ($user_id) { $admin_arr = array(1, 2); foreach ($admin_arr as $value) { if ($value == $user_id) { return true; } } return false; }
Могу ли я сделать массив вне этой функции глобальным массивом и использовать его внутри функции, не отправляя ее как параметр, а вместо этого объявляя новый массив администрирования внутри функции, как я только что сделал выше? Как мне это сделать?
С уважением, Александр
Чтобы ответить на буквальный вопрос:
// Global variable $admin_arr = array(1, 2); function isAdmin ($user_id) { // Declare global global $admin_arr; foreach ($admin_arr as $value) { if ($value == $user_id) { return true; } } return false; }
Документация здесь: http://php.net/manual/en/language.variables.scope.php
Чтобы ответить на РЕАЛЬНЫЙ вопрос: избегайте глобального ценой. Вы вводите множество приложений, подверженных ошибкам, в ваше приложение. Опираясь на глобальные переменные, вы попадаете в мир боли и делаете ваши функции менее полезными.
Избегайте этого, если вы не увидите другого пути.
вы должны сделать это с помощью глобального ключевого слова
здесь пример
$arr = array('bar'); function foo() { global $arr; echo array_pop($arr); } foo();
Я согласен с другими в том, что это не предпочтительный способ сделать это, и вы должны передавать массив как параметр, но я просто хотел указать суперглобальный массив $GLOBALS[]
, который я считаю более читаемым, чем global
ключевое слово ,
$global_array = array(1,2,3); function myfunc() { echo $GLOBALS['global_array'][0]; print_r($GLOBALS['global_array']); }