开发者

JavaScript Array Formatting problem

开发者 https://www.devze.com 2023-01-23 11:52 出处:网络
Can someone assist me with formatting this JavaScript array correctly?I am obviously missing something fundamental:

Can someone assist me with formatting this JavaScript array correctly? I am obviously missing something fundamental:

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>

PHP used to generate the above JavaScript:

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

    $w开发者_StackOverflowidths = 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\", \"--\");";

    }
} ?>

Thank you in advance for your help

Stu


You shouldn't be putting var in front of array assignments, just the initial definitions.

So var widths = ... is fine, but var rims["225"] = ... is incorrect and should just be rims["225"] = ....

Change your php; in the line of code that outputs that text remove the "var". Change this:

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

To this:

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

That will solve your problem. But really, this overall solution is not the best. You ought to consider looking into the json-encode php method.

You can take a fully-structured php data structure and with this one command convert to something that can be read by javascript. Try replacing your php with the below and see what happens (note that this is untested, but this is the basic idea):

<?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";
?>
0

精彩评论

暂无评论...
验证码 换一张
取 消