如果我理解你好了,如果在PHP分配到Smarty的內容是這樣的:
$smarty->assign('combinations', array (1,2,3,20));
您可以在Smarty的使用:
<script>
var combinations = [];
{foreach $combinations as $item}
combinations.push({$item})
{/foreach}
console.log(combinations);
</script>
正如我加入console.log(combinations);
登錄到JS控制檯,在控制檯中有
Array [ 1, 2, 3, 20 ]
所以所有元素被插入JavaScript數組。
如果你有更復雜的PHP數組:
$smarty->assign('combinations', array(
'a' => 'aval',
'b' => 'bval',
'c' => array('c1' => 'c1val', 'c2' => 'c2val'),
'd' => array(
'd1' => 'd1val',
'd2' => array(
'd21' => 'd21val',
'd22' => 'd22val',
'd23' => array('d231', 'd232')
)
)
));
,你想創建平JavaScript數組,你可以使用:
{function jsadd}
{foreach $data as $item}
{if not $item|@is_array}
combinations.push('{$item}')
{else}
{jsadd data = $item}
{/if}
{/foreach}
{/function}
<script>
var combinations = [];
{jsadd data=$combinations}
console.log(combinations);
</script>
,你會得到:
Array [ "aval", "bval", "c1val", "c2val", "d1val", "d21val", "d22val", "d231", "d232" ]
EDIT2
如果你需要使用從PHP數據,你在評論解釋你可以使用這個Smarty的模板中的JavaScript來創建多維數組:
{function jsadd keypart=''}
{foreach $data as $key => $item}
{if not $item|@is_array}
{if $keypart eq ''}
combinations['{$key}'] = '{$item}'
{else}
combinations{$keypart}['{$key}'] = '{$item}'
{/if}
{else}
combinations{$keypart}['{$key}'] = [];
{jsadd data = $item keypart = "`$keypart`['`$key`']" }
{/if}
{/foreach}
{/function}
<script>
var combinations = [];
{jsadd data=$combinations}
console.log(combinations['a']);
</script>
「我有數組項,數組,數組的可用$組合陣列等等。」所以,讓我們說在PHP中我可以使用: $ smarty-> assign('combinations',array('a'=>'aval','b'=>'bval','c'=> array( 'C1'=> 'c1val', 'C2'=> 'c2val'), 'd'=>數組( 'D1'=> 'd1val', 'D2'=>數組( 'D21'=> 'd21val' ,'d22'=>'d22val','d23'=> array('d231','d232'))))) – 2014-09-21 18:01:12
@KubaStachu JavaScript數組應包含哪些PHP值?請使用這些示例數據和所需的JS數組輸出編輯您的問題。 – 2014-09-21 18:05:16
不幸的是我不需要拼合數組,我需要重複它的JavaScript結構。其實我正在與prestashop模塊中的靜態變量,但他們似乎不工作在PrestaShop ... – 2014-09-21 18:27:38