2011-12-08 27 views

回答

0

由於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> 
+0

不要使用'新Array'! 如果你有'新的數組(12)'12個元素的數組將被創建。但是如果你有'新的數組(12,13)'2個元素的數組[12,13]將被創建。 如果您僅將數組分配給一個元素,則代碼將無法按預期工作。請參閱[數組](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array) – DamirR

+0

@DamirR當然你是對的 - 編輯我的答案以糾正錯誤 - 謝謝指出。 – TheOx

0

最簡單的方法是使用JSON:

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

json_encode()把你的PHP數據並將其轉換成JSON,並在我們的情況下,這正是我們需要的。

0

我認爲它應該簡單的像

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

<script type="text/javascript"> 
    var iArray = <?php echo $js_array;?>; 
</script> 
0

在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

這是更好地使用[]而不是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}

相關問題