【问题标题】:JavaScript Array Formatting problemJavaScript 数组格式化问题
【发布时间】:2010-11-05 16:36:23
【问题描述】:

有人可以帮助我正确格式化这个 JavaScript 数组吗?我显然遗漏了一些基本的东西:

Javascript:

<script type="text/javascript">

    var widths = new Array("225","320","480", "--");
    var sidewalls = new Array();
    sidewalls["225"] = new Array("65","55","45","40", "--");
        var rims["225"] = new Array();
            rims["225"]["65"] = new Array("R17", "--");
            rims["225"]["55"] = new Array("R17","R18", "--");
            rims["225"]["45"] = new Array("R17", "--");
            rims["225"]["40"] = new Array("R18", "--");
    sidewalls["320"] = new Array("70", "--");
        var rims["320"] = new Array();
            rims["320"]["70"] = new Array("R20","R24", "--");
    sidewalls["480"] = new Array("65", "--");
        var rims["480"] = new Array();
            rims["480"]["65"] = new Array("R28", "--");

</script>

用于生成上述 JavaScript 的 PHP:

<?php   while($row = mysql_fetch_array($result)) {
    list($width, $sidewall, $rim) = explode("/",$row['meta_value']); $menu[$width][$sidewall][$rim] = 1; } 

    $widths = implode('","', array_keys($menu));
        print "var widths = new Array(\"$widths\", \"--\");\n";
        print "\nvar sidewalls = new Array();\n";

    foreach($menu as $width => $sidewall_array) {
        $sidewalls = implode('","', array_keys($sidewall_array));
            print "sidewalls[\"$width\"] = new Array(\"$sidewalls\", \"--\");";
            print "\nvar rims[\"$width\"] = new Array();\n";

    foreach($sidewall_array as $sidewall => $rim_array) {
        $rims = implode('","', array_keys($rim_array));
            print "rims[\"$width\"][\"$sidewall\"] = new Array(\"$rims\", \"--\");";

    }
} ?>

提前感谢您的帮助

学习

【问题讨论】:

  • 它正在填充
  • 考虑[a, b, c] 而不是new Array(a, b, c)
  • 我在各种选项中转来转去,无法完成答案,我将为此代码付费,我需要三个相关菜单.. stuart[dot]stalker[at]gmail[dot]com

标签: javascript arrays multidimensional-array


【解决方案1】:

您不应该将 var 放在数组分配的前面,而只是将初始定义放在前面。

所以var widths = ... 很好,但var rims["225"] = ... 不正确,应该是rims["225"] = ...

改变你的 php;在输出该文本的代码行中删除“var”。改变这个:

print "\nvar rims[\"$width\"] = new Array();\n";

到这里:

print "\nrims[\"$width\"] = new Array();\n";

这将解决您的问题。但实际上,这个整体解决方案并不是最好的。您应该考虑研究json-encode php 方法。

您可以采用完全结构化的 php 数据结构,并通过这个命令转换为 javascript 可以读取的内容。尝试用下面的代码替换你的 php,看看会发生什么(注意这是未经测试的,但这是基本思想):

<?php
    while($row = mysql_fetch_array($result)) { list($width, $sidewall, $rim) = explode("/",$row['meta_value']); $menu[$width][$sidewall][$rim] = 1; }

    print "var widths = " . json_encode(array_keys($menu)) . ";\n";
    print "var sidewalls = " . json_encode($menu) . ";\n";
?>

【讨论】:

  • 想通过重写获得一些啤酒代币,包括菜单?我想哭!! stuart.stalker[at]gmail[dot]com
  • json_encode +1 @Stuart:查看JSON (Javascript Object Notation)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2013-07-03
相关资源
最近更新 更多