2012-10-10 70 views
10

請提供有關如何PHP數組賦值給JavaScript數組如何分配PHP數組值JavaScript數組

幫助-----------使用下面的PHP代碼,我存儲在PHP數據陣列-----------

<?php 
$str_query="SELECT title,description FROM tablename ORDER BY title"; 
$rs_sch=GetRecordset($str_query); 

$int_count=0; 
$schd_arr = array(); 
while(!$rs_sch->EOF()) 
{ 
$schd_arr[$int_count] = $rs_sch->Fields("title").": ".$rs_sch->Fields("description"); 
$rs_sch->MoveNext(); 
$int_count++; 
} 
?> 

-----使用JavaScript代碼,我試圖存儲PHP數組數據下到JavaScript數組-----

請讓我知道在2個提到的位置寫什麼和如何寫變量,所以我的代碼可以工作。

<script type="text/javascript" language="javascript"> 
var pausecontent=new Array() 
for (sch_cnt=0; sch_cnt<*Here I want to assign value of $int_count php variable*; sch_cnt++) 
{ 
pausecontent[sch_cnt]=<?php *Here I want to assign php array and counter values (something like this - $schd_arr[sch_cnt];)* ?>; 
} 
</script> 

謝謝你在前進, KRA

+1

如果腳本位於同一個文件中的PHP源代碼中的最佳解決方案,確保該代碼首先執行,那麼你可以參考它。否則請添加一些關於您正在嘗試做什麼的信息 – nijansen

回答

30

你不能循環一樣,你需要循環的PHP數組和push轉換爲javascript數組:

<script type="text/javascript" language="javascript"> 
    var pausecontent = new Array(); 
    <?php foreach($schd_arr as $key => $val){ ?> 
     pausecontent.push('<?php echo $val; ?>'); 
    <?php } ?> 
</script> 
+0

非常感謝,這對我很有用。 – KRA

+0

@hakre回答比選擇的更優選 –

-1

你可以做這樣既:

for (sch_cnt=0; sch_cnt<?php echo $int_count; ?>; sch_cnt++) 
32

您可以直接使用json_encode功能。它很容易使用,並生成有效的JavaScript,所以非常穩定:

<script type="text/javascript"> 
    var pausecontent = <?php echo json_encode($php_array); ?>; 
</script> 
+1

特別是,因爲這將輸出有效的JavaScript。更加優選。 – hakre

2

我想你最好先把數組放到你的javascript中。這將是這樣的:

var theVariableYouWantTheArrayIn = <?php echo json_encode($theArrayYouWantInJavascript); ?> 

,這是一個正常的JS數組後,這樣你就可以像使用。長度特性,這將可能使循環更加容易。

0

以上兩個答案都很好。

  1. 通過你得到了作爲數據庫查詢的結果,每個值添加到新的PHP變量數組迭代,
  2. 每次迭代過程中添加計數器並加一,以確保你不加入最後一個元素後面的逗號,
  3. 如果數組中元素的數量大於1,則像往常一樣創建數組,否則使用1元素創建一個新數組並將您的PHP數組值賦給索引0.
0

我有同樣的問題這樣做,但最後發現

<script>  
    var arr=[]; 
    arr.push('<?php 
      include('conn.php'); 
     $query = "SELECT *FROM c group by name"; 
     $res = mysqli_query($conn,$query) or die(mysqli_error($conn)); 

     while($data = mysqli_fetch_array($res)) 
     { 


      echo $data["name"]; 
     } 
      ?>'); 
     </script>