有人可以帮我正确格式化这个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 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\", \"--\");";
}
} ?>
提前感谢您的帮助
斯图
答案 0 :(得分:2)
你不应该将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";
?>