将多维php数组分配给javascript数组

时间:2011-11-07 22:15:01

标签: php javascript arrays

我知道这可能是重复的,但我无法将我的大脑包裹在其他例子中。帮助将不胜感激。 我有一个PHP数组,我需要分配给一个javascript数组。这是我现在这样做的业余方式。 您可以在http://www.preferweb.com/accentps/index.php

查看来源
<?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>

此警报未定义为勾选警报,第二次警报没有任何内容..谢谢..

5 个答案:

答案 0 :(得分: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>

对我来说看起来更干净。

答案 1 :(得分:1)

您的代码错误是因为PHP生成的内容(特别是因为您在JavaScript中使用数字作为变量名,而且每个循环都定义了相同的变量)。

为了简化您想要实现的目标,只需在PHP中创建一些变量并为其指定值。让我们称它为例如。 $my_proxy_var

然后将其传递给JavaScript (在某些<script>标记内):

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

请记住:

  • PHP中的非关联数组成为JavaScript中的简单数组,
  • PHP中的关联数组成为JavaScript中的对象,

这很重要,因此您可以避免混淆,并在每个级别上选择非关联数组和关联数组。

您可以在this codepad上测试代码。

答案 2 :(得分:1)

使用数组的方式不正确。

首先你应该初始化数组:

var myArr = [];

然后,如果您只想添加到数组,可以使用push:

myArr.push("something");

或特定指数:

myArr[11] = "something";

您使用的语法完全无效。

答案 3 :(得分:1)

  1. 您不能在javascript中使用数字作为变量名称。
  2. 每行不需要使用“var”。像

    这样的东西
    var test = [];
    test[1] = 'some value';
    test[2] = 'some value';
    
  3. 您可能希望使用PHP中的JSON_ENCODE函数

答案 4 :(得分: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