我很抱歉。在这件事上我是个新手。我尝试创建一个全局变量来在不同的位置显示内容。
$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
(
)
发布于 2018-08-09 07:41:58
正如@fubar所提到的,你的$new_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);
发布于 2018-08-09 08:25:16
要访问函数内部的外部变量,请使用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;
}
&
是使其成为对同一变量的引用而不是副本所必需的,这样您就可以在函数内部修改它。
https://stackoverflow.com/questions/51756589
复制相似问题