Как прочитать массив PHP в переменную сценария Java в Smarty? - PullRequest
0 голосов
/ 08 декабря 2011

Я получаю массив в php и отправляю его в файл smarty .tpl.

В smarty я хотел бы получить этот массив в переменной сценария Java.

Как это сделать. Пожалуйста, помогите мне ...

Ответы [ 5 ]

0 голосов
/ 13 января 2012

Лучше использовать [] вместо new Array. Вам нужно помещать значения в кавычки и избегать их - чтобы не нарушать js. Мне действительно не нравится предварительная обработка данных в php, просто чтобы назначить их smarty. Это решает все потенциальные проблемы:

<script type="text/javascript">
    var arr=[
    {foreach name=i from=$myarray item=v}
      '{$v|escape:"javascript"}'
      {if !$smarty.foreach.i.last},{/if}
    {/foreach}
    ];
</script>

если ваш массив содержит только целые числа, вы можете использовать {$v|intval}

0 голосов
/ 08 декабря 2011

В php файл просто добавьте вот так

<?
$arr = array(1,2,3,4,5);
$jsarr = implode(',',$arr);
$smarty->assign(arr,$jsarr);
?>

в файле шаблона используйте это как

<html>
<head>
<script type="text/javascript">
var array = new Array({$arr});
</script>
</head>
</html>
0 голосов
/ 08 декабря 2011

Самый простой способ - использовать json:

<script type="text/javascript">
var arr = <?= json_encode($arr) ?>;
</script>

json_encode() берет ваши php-данные и преобразует их в json, и в нашем случае это именно то, что нам нужно.

0 голосов
/ 08 декабря 2011

Я думаю, это должно быть просто, как

<?php
  $_array = array('apple','banana','durian');
  $js_array = '[' . implode(',',$_array) . ']';
?>

<script type="text/javascript">
    var iArray = <?php echo $js_array;?>;
</script>
0 голосов
/ 08 декабря 2011

Поскольку PHP анализируется перед любым JS, вы можете просто добавить значения из массива PHP в функцию JS:

Так что, если у вас есть этот массив в PHP:

$my_array = array("a","b","c","d","e");

Затем вы можете использовать следующее для инициализации массива JS с теми же значениями:

<?php
    //PHP snippet to create a comma-delimited string with each value of $my_array
    //surrounded by quotation marks.  Quotes not needed if values in array are numeric.
    $array_vals = '"' .implode('","', $my_array) .'"';
?>
<script type="text/javascript">
    var my_array = [<?php echo $array_vals;?>];
</script>
...