Intereting Posts
Применение информации из одной таблицы в отдельную таблицу в той же базе данных? jQuery ajax неограниченный динамический selectbox на основе родительских категорий Лучшее место для хранения больших объемов данных сеанса Как я могу очистить память при работе с длинным PHP-скриптом? try unset () Как отправить электронную почту в записках лотоса с помощью PHP как я могу использовать preg_match с буквенно-цифровым и уникодным приемом? Создание csv-файла с php Как установить внутренний указатель Arrays на определенную позицию? PHP / XML Сортировка PHP проверка правильности выбора кода в Codeigniter Войдите в Gmail Inbox с помощью Curl? Как выглядит кеш страницы в CodeIgniter PHP-массив, хранящийся в сеансе, имеет значение null, если мы инициализируем массив с тем же самым ключом, это проблема с кодировкой или проблема с php? CodeIgniter BASEPATH Портирование расшифровки C # AES 256 на PHP

Область действия переменной php

Мне было интересно, есть ли у меня такая функция:

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']); }