다음 예제에서 배열이 문자열 연결로 업데이트되지 않는 이유를 알고 싶습니다. 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/jquery.js
에
jquery.js
에서
$scripts[0]
을 변경하려면이 코드를 예상했다. 그러나 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' 변수는 당신이 그것을 수정하려 할 때 복사된다. 같은 결과지만, 다른 이유. –
예, 그렇지만 $ scripts는 변경되지 않으며 smarty와는 아무런 관련이 없습니다. –
나는 그것을 논박하지 않고 있는데, 나는 그것이 작동하지 않는 이유는'foreach'가 배열의 복사본에서 작동하기 때문이 아니라고 말하고있다. –