Я хотел бы знать, почему массив не обновляется с помощью конкатенации строк в следующем примере.Объем переменных в файле PHP, переданных Smarty
$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"
Это не совсем так; он не работает с копией, переменная '$ script' копируется при попытке изменить ее. Тот же результат, но по другой причине. –
Да, но означает, что скрипты $ не будут изменены, и это не имеет ничего общего с smarty. –
Я не оспариваю этого, я говорю, что причина, по которой он не работает, не потому, что 'foreach' работает над копией массива. –