对不起。我在这件事上很新。我试图创建一个全局变量以在不同位置显示内容。
$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
(
)
答案 0 :(得分:1)
如@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);
答案 1 :(得分:0)
要访问函数内部的外部变量,请使用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;
}
&
必须使其成为对同一变量的引用,而不是副本,因此您可以在函数内部对其进行修改。