首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将全局变量设置为别名

如何将全局变量设置为别名
EN

Stack Overflow用户
提问于 2018-08-09 06:36:06
回答 2查看 203关注 0票数 0

我很抱歉。在这件事上我是个新手。我尝试创建一个全局变量来在不同的位置显示内容。

代码语言:javascript
复制
$array = array('3 January 2018 - Month - Month of Circumstances',
            '2 February 2018 - Month - A New Advancement', 
            '1 March 2018 - Month - The Threat',
            '31 April 2018 - Month - Month of Prediction',
            '30 May 2018 - Month - Seven Days');

$new_array = array();
foreach($array as $item) 
{
  echo preg_replace_callback('/.*-\s*(.*)/', function($match)
  {
    $new_array[] = 'My.Item.' . preg_replace('/\W+/', '.', $match[1]);
  }, $item) . PHP_EOL;
}

print_r($new_array);

结果就是:

代码语言:javascript
复制
Array
(
)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-09 07:41:58

正如@fubar所提到的,你的$new_array超出了作用域,你将无法在你的闭包函数中访问它。您可以将您的代码更改为如下所示。

代码语言:javascript
复制
$array = array('3 January 2018 - Month - Month of Circumstances',
            '2 February 2018 - Month - A New Advancement', 
            '1 March 2018 - Month - The Threat',
            '31 April 2018 - Month - Month of Prediction',
            '30 May 2018 - Month - Seven Days');

$new_array = array();
foreach($array as $item) 
{
  $new_array[] = preg_replace_callback('/.*-s*(.*)/', function($match)
  {
     return 'My.Item.' . preg_replace('/W+/', '.', $match[1]);
  }, $item) . PHP_EOL;
}

print_r($new_array);
票数 1
EN

Stack Overflow用户

发布于 2018-08-09 08:25:16

要访问函数内部的外部变量,请使用use()声明。

代码语言:javascript
复制
foreach($array as $item) 
{
  echo preg_replace_callback('/.*-\s*(.*)/', function($match) use(&$new_array)
  {
    $new_array[] = 'My.Item.' . preg_replace('/\W+/', '.', $match[1]);
  }, $item) . PHP_EOL;
}

&是使其成为对同一变量的引用而不是副本所必需的,这样您就可以在函数内部修改它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51756589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档