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

Php 如何将全局变量设置为别名,php,variables,foreach,Php,Variables,Foreach,对不起。这件事我是新手。我尝试创建一个全局变量,以在不同的位置显示内容 $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 - Mo

对不起。这件事我是新手。我尝试创建一个全局变量,以在不同的位置显示内容

$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);
结果是:

Array
(
)

正如@fubar所提到的,you's
$new\u array
超出范围,您将无法在闭包函数中访问它。您可以将代码更改为类似这样的内容

$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);

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

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;
}

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

为什么?什么是“它”?请重新阅读并更新你的帖子,把所有你知道的东西都写出来,但我们不清楚。你在向真实的人寻求帮助,他们需要一个很好的解释,说明你想做什么,你是如何尝试的,结果是什么,以及结果如何与你期望的不符。谢谢。
$new_array
超出了回调关闭的范围。