【问题标题】:assigning multidimensional php array to javascript array将多维php数组分配给javascript数组
【发布时间】:2011-12-24 00:14:01
【问题描述】:

我知道这可能是重复的,但我无法围绕其他示例进行思考。帮助将不胜感激。 我有一个需要分配给 javascript 数组的 php 数组。这是我现在的业余方式。 您可以在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>

对于滴答警报未定义此警报,对于第二个警报则没有定义。谢谢..

【问题讨论】:

  • 实际上,这可以相当简单地使用json_encode($array),自 PHP 5.2.0 起可用

标签: php javascript arrays


【解决方案1】:

您不能使用整数作为变量名,例如以下行: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>

对我来说看起来干净多了。

【讨论】:

  • 太棒了!!!这做得很漂亮!我只需要学习json_encode。感谢您的帮助!
【解决方案2】:

您使用数组的方式不正确。

首先你应该初始化数组:

var myArr = [];

那么如果你只是想添加到数组中,你可以使用push:

myArr.push("something");

或特定索引:

myArr[11] = "something";

您使用的语法完全无效。

【讨论】:

  • 谢谢。我还在学习,你说的很有道理。
【解决方案3】:

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

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

然后像这样将它传递给 JavaScript(在一些 &lt;script&gt; 标记内):

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

请记住:

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

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

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

【讨论】:

【解决方案4】:
  1. 您不能在 javascript 中使用数字作为变量名。
  2. 您不需要在每一行中都使用“var”。类似的东西

    var test = [];
    test[1] = 'some value';
    test[2] = 'some value';
    
  3. 您可能想看看使用 PHP 中的 JSON_ENCODE 函数

【讨论】:

    【解决方案5】:
    <?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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      相关资源
      最近更新 更多