2011-11-07 45 views
0

我知道這可能是重複的,但我不能包圍我的大腦圍繞其他例子。幫助將不勝感激。 我有一個PHP數組,我需要分配給一個JavaScript數組。這是我現在做的業餘方式。 您可以在http://www.preferweb.com/accentps/index.php分配多維php陣列到JavaScript數組

<?php 

$i=0; 
while ($result1 = mysql_fetch_array($query1)){ 
print "<script>"; 
print "var size[".$i."]=" .$result1['type'].";\n"; 
print "var 25[".$i."]=" .$result1['25'].";\n"; 
print "var 50[".$i."]=" .$result1['50'].";\n"; 
print "var 100[".$i."]=" .$result1['100'].";\n"; 
print "var 250[".$i."]=" .$result1['250'].";\n"; 
print "var 500[".$i."]=" .$result1['500'].";\n"; 
print "var plus[".$i."]=" .$result1['plus'].";\n"; 
$i = $i+1; 
} 
print "var tick='1';\n"; 
print "alert (tick);\n"; 
print "</script>\n"; 
?> 
<script> 
alert (500[0]); 

</script> 

此提醒未定義蜱警報並沒有爲第二警報..謝謝看到源..

+0

實際上JSON_ENCODE功能的東西,這可能是相當簡單的使用'json_encode($陣列)',可用自PHP 5.2.0 – Shea

回答

2

在這條線不能使用一個整數作爲變量名,如:print "var 25[".$i."]=" .$result1['25'].";\n";。 25不能是一個變量。

如果要映射一個數組爲JavaScript對象,你可能想看看json_encode


你的代碼可以這樣寫:

<?php 
$result = array(); 

while ($row = mysql_fetch_array($query1)){ 
    $result[] = $row; 
} 
?> 
<script> 
    var result = <?= json_encode($result); ?>; 
    alert (result[1][500]); 
</script> 

外觀對我來說更乾淨。

+0

真棒!這很漂亮!我只需要研究json_encode。感謝您的幫助! –

1

由於PHP生成的內容(特別是因爲您在JavaScript中使用數字作爲變量名,並且每個循環都定義了相同的變量),您的代碼是錯誤的。

爲了簡化您想要實現的功能,只需在PHP中創建一些變量併爲其分配一個值。讓我們稱之爲例如。 $my_proxy_var

然後它傳遞給JavaScript那樣(在一些<script>標籤):

var myProxyVar = <?php echo json_encode($my_proxy_var); ?>; 

只要記住:

  • 在PHP非關聯數組成爲在JavaScript中,
  • 簡單的數組
  • PHP中的關聯數組成爲JavaScript中的對象,

這很重要,所以您可以避免混淆,並在每個級別上的非關聯和關聯數組之間進行選擇。

您可以在this codepad上測試代碼。

+0

和json_encode可以被覆蓋:http://php.net/manual/en/function.json-encode.php –

+0

@JimH .:你是什麼意思的「_and json_encode可以被覆蓋」?根據[文檔](http://php.net/manual/en/function.override-function.php),您可以覆蓋內置函數,但是要點是什麼? – Tadeck

1

您使用數組的方式不正確。

首先,你應該初始化數組:

var myArr = []; 

然後,如果你只是想添加到數組,可以使用按鍵:

myArr.push("something"); 

或特定指數:

myArr[11] = "something"; 

您使用的語法是完全無效的。

+0

謝謝。我仍然在學習,你說的話是有道理的。 –

0
<?php 
    if (!func_exists('json_encode')) die('sorry... I tried'); 
    $buffer = array(); 
    while ($value = mysql_fetch_assoc($result)) { 
     $buffer[] = $value; 
    } 
    echo "<script>var data = ".json_encode($buffer)."</script>"; 
?> 
<script> 
console.log(data); 
</script> 

需要PHP 5.2.0

+0

doh!有人打我 – Shea

1
  1. 不能使用數字作爲JavaScript變量名。
  2. 您不需要在每行使用「var」。像

    var test = []; 
    test[1] = 'some value'; 
    test[2] = 'some value'; 
    
  3. 你可能想看看使用從PHP