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 举报,一经查实,本站将立刻删除。