微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将数组提取到全局变量中

The manual on “extract”显示您可以提取如下数组:

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

分成1美元,2美元……

但是提取函数不返回变量.有没有办法将这些变量“全球化”?也许不是使用提取,而是使用foreach循环?

编辑:(解释我正在努力实现的目标)
我有一个包含数百个输出消息的数组,我希望它们可以作为变量有效地访问.我的意思是每当我想输出一条消息时,请说:

$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感兴趣

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐