如何在JS创建关联数组
var stds = [];
<?php
foreach ($this->students as $key => $value){
?>
var smval = "<?php echo $value?>";
stds.push(smval);
<?php
}
?>
alert("stds"+stds);
警报( “性病” +性病); //打印ABC,BCD,EFG等等...如何在JS创建关联数组
上面的代码工作正常,推动学生姓名。 现在我想推学生代码也有价值$键。 如何创建一个关联数组做
做到这一点最干净和最安全的方法是将PHP对象转换成JavaScript对象常量json_encode:
var students = <?= json_encode($this->students) ?>;
// sample usage
alert (students["Tony"]); // Tony's student code
alert (students["Geezer"]); // Geezer's student code
alert (students["Vinnie"]); // etc.
这个例子有两个不好的地方:你不需要在json_encode返回的地方加上引号(或者调用jQuery.parseJSON)并且你不需要转义引号,json_encode总是返回一些有效的JavaScript代码,所以你可以使用'var students = students)?>;' – 2012-03-06 01:06:46
+1感谢您指出这一点。我将编辑答案。 – 2012-03-06 23:16:12
现在它值得+1;) – 2012-03-07 00:14:51
var stds = [];
<?php
foreach ($this->students as $key => $value){
?>
stds.push({ 'name': '<?php echo $value; ?>', 'code': '<?php echo $key; ?>' });
<?php
}
?>
alert("stds"+stds);
准确地说:有在JavaScript没有关联数组。你可以使用上面的代码,它给你一个包含你的数据或下面的代码的对象数组,它给你一个类似于你在PHP中使用的对象。
var stds = {};
<?php
foreach ($this->students as $key => $value){
?>
stds[ '<?php echo $key; ?>' ] = '<?php echo $value; ?>';
<?php
}
?>
alert("stds"+stds);
var stds = <?php echo json_encode($this->students); ?>;
不知道钥匙是你的数组中
alert(stds[0][ key1 ] +' ' + stds[0][ key2 ])
我想你想要做更多的
stds[<?php echo $key?>] = '<?php echo $value; ?>';
,或者你可以尝试使用对象中做证明这里:
不要这样做,你需要在你的字符串中转义引号和换行符。只需调用'json_encode'为你完成繁重的工作。将PHP数组和值转换为JS比大多数人想象的要简单。 – 2012-03-07 00:17:17
这似乎是严重*易受XSS。 – 2012-02-29 20:05:03
为什么不是json_encode? – 2012-02-29 20:09:57