Intereting Posts
Как распечатать страницу в PHP для печати с использованием принтера, аналогичного работе с окном.print () Загрузка / изменение изображения PHP создает черное изображение .htaccess переписать для хоста WordPress, размещенного на Bitnami / EC2 Google_Service_Directory – (403) Не авторизовано для доступа к этому ресурсу / api отправлять PHP-переменные с помощью javascript (ссылка?) APC (альтернативный кэш PHP), бросающий множество PHP-уведомлений Обновление атрибута Magento Programmatically Получать случайные фразы из массива в PHP? Отображение таблицы в PHP с повторяющимися столбцами compact () против объявления ручного массива на php Отправить форму через cURL и переадресовать браузер в PayPal .htaccess переписывание URL с помощью php Regex, получите строковое значение между двумя символами DOMDocument / Xpath утечка памяти при длительном процессе командной строки – любой способ деконструировать этот класс Zend Framework 2 фильтрует / проверяет массив содержимого

php – извлечь массив в глобальные переменные

В руководстве по «извлечению» показано, что вы можете извлечь массив, например:

extract(array('one'=>1,'two'=>2)); 

в $ 1, $ 2 …

Но функция extract не возвращает переменные. Есть ли способ «глобализации» этих переменных? Может быть, не использовать экстракт, а цикл foreach?

EDIT: (объяснение о том, чего я пытаюсь достичь) У меня есть массив, содержащий сотни выходных сообщений, которые я хочу иметь доступными как переменные эффективно. Я имею в виду, что всякий раз, когда я хочу вывести сообщение, скажите:

 $englishMessages = array('helloWorld'=>'Hello World'); $spanishMessages = array('helloWorld'=>'Hola Mundo'); '<span id="some">'. $helloWorld .'</span>'; 

Появится сообщение. Причина, по которой я делаю это, так это то, что пользователи могут изменять язык, на котором они просматривают веб-сайт, поэтому что-то вроде: ''. $ helloWorld. ''; будет производить:

 Hola Mundo! 

Не совсем ответ на ваш вопрос … но: Храните массив, не загрязняйте (глобальное) пространство имен переменных.

 $englishMessages = array('helloWorld'=>'Hello World'); $spanishMessages = array('helloWorld'=>'Hola Mundo'); // wrap this in a nice function/method $lang = $englishMessages; // then use $lang for the output '<span id="some">'. $lang['helloWorld'] .'</span>'; 

Некоторые вариации по одной теме:

 function getMessages($language) { static $l = array( 'en'=> array('helloWorld'=>'Hello World'), 'es' => array('helloWorld'=>'Hola Mundo') ); // <-- add handling reporting here --> return $l[$language]; } $lang = getMessages('en'); echo '<span id="some">'. $lang['helloWorld'] .'</span>'; 

или

 function __($language, $id) { static $l = array( 'en'=> array('helloWorld'=>'Hello World'), 'es' => array('helloWorld'=>'Hola Mundo') ); // <-- add error handling here --> return $l[$language][$id]; } echo '<span id="some">'. __('es', 'helloWorld') .'</span>'; 

Вы также можете быть заинтересованы в http://docs.php.net/gettext

  $GLOBALS += $vars; 

например

 function foo() { $vars = array('aa' => 11, 'bb' => 22); $GLOBALS += $vars; } foo(); echo $aa; // prints 11 

что вы можете объяснить, зачем вам это нужно? Использование глобальных переменных считается плохим стилем, возможно, есть лучший способ

использование extract () в массиве будет создавать новые переменные внутри текущей области или назначать новые значения для существующих переменных.

Я не уверен, что вы подразумеваете под «глобализацией», но я понимаю, что вы пытаетесь выполнить именно то, что делает extract (), просто помните о текущей области (если вы извлекаете () изнутри функции, извлеченный переменные будут доступны только внутри самой функции).

Ты имеешь в виду:

  foreach($array as $var_name => $var_value) { global $$var_name; $$var_name = $var_value; } 

Это будет глобальная каждая переменная, а затем установите ее значение. Для вас это создало бы $one и $two

 foreach ($array as $key => $value) { // initialize the variables as global global $$key; $$key = $value; } 

РЕДАКТИРОВАТЬ:

Только что заметила мою ошибку, вам нужно сделать ключ массива переменной, что можно сделать, переведя его в переменные переменные, используя нотацию $$ .

Вы ищете переменные, которые были извлечены? Их можно найти с помощью array_keys()