Если я вас понимаю хорошо, если в 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
И если вам нужно создать многомерный массив в JavaScript с использованием данных из PHP, как вы объяснили в комментарии вы можете использовать этот шаблон Smarty:
{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 ('combination', array ('a' => 'aval', 'b' => 'bval', 'c' => array ('с1' => 'c1val', 'с2' => 'c2val'), 'd' => массив ('d1' => 'd1val', 'd2' => массив ('D21' => 'd21val' , 'd22' => 'd22val', 'd23' => array ('d231', 'd232'))))) –
@KubaStachu И что должен содержать массив JavaScript для этих значений PHP? Пожалуйста, отредактируйте свой вопрос с этими данными образца и желаемым массивом JS-массива. –
К сожалению, мне не нужно сгладить массив, мне нужно продублировать его структуру для javascript. На самом деле я борюсь со статическими переменными в модуле prestashop, но они просто не работают в PrestaShop ... –