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
超出了回调关闭的范围。