我想知道为什么在以下示例中没有使用字符串连接更新数组。
$scripts = array( "jquery.js","bootstrap.min.js",
"jquery-jvectormap-1.0.min.js",
"jquery-jvectormap-us-aea-en.js",
"protoFluid.js");
foreach($scripts as $script)
$script = "/scripts/".$script;
$smarty -> assign('scripts',$scripts);
我希望此代码能够将$scripts[0]
从jquery.js
更改为/scripts/jquery.js
。但是,Smarty调试控制台显示以下内容。
Smarty_Variable Object (3)
->value = Array (5)
0 => "jquery.js"
1 => "bootstrap.min.js"
2 => "jquery-jvectormap-1.0.min.js"
3 => "jquery-jvectormap-us-aea-en.js"
4 => "protoFluid.js"
->nocache = false
->scope = "Smarty root"
答案 0 :(得分:2)
Foreach正在处理数组的副本,你必须这样做:
foreach($scripts as &$script)
$script = "/scripts/".$script;
答案 1 :(得分:1)
根据您之后是否还需要原始数组,您可以使用array_map()
创建修改后的副本:
$smarty->assign('scripts', array_map(function($script) {
return "/scripts/$script";
}, $scripts));