我知道这可能是重复的,但我无法将我的大脑包裹在其他例子中。帮助将不胜感激。 我有一个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>
此警报未定义为勾选警报,第二次警报没有任何内容..谢谢..
答案 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); ?>;
请记住:
这很重要,因此您可以避免混淆,并在每个级别上选择非关联数组和关联数组。
您可以在this codepad上测试代码。
答案 2 :(得分:1)
使用数组的方式不正确。
首先你应该初始化数组:
var myArr = [];
然后,如果您只想添加到数组,可以使用push:
myArr.push("something");
或特定指数:
myArr[11] = "something";
您使用的语法完全无效。
答案 3 :(得分:1)
每行不需要使用“var”。像
这样的东西var test = [];
test[1] = 'some value';
test[2] = 'some value';
您可能希望使用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