[英]Iterating over PHP array to create Javascript array with PHP foreach
在制作PHP数组的PHP数组迭代期间,我在使用烦人的','时遇到了一些麻烦。 本质上,我所拥有的是:
<?php
$array = array(StdObject,StdObject,StdObject);
?>
//later that page...in JavaScript
var list = [
<?php foreach($array as $value):?>
'<?=$value->some_letter_field?>',
<?endforeach;?>
];
不幸的是,这段代码所做的是产生如下输出:
var list = ['a','b','c',];
注意JavaScript数组中的多余逗号吗? 这引起了一些问题。 我将如何重新编写此PHP代码段,以免出现多余的逗号,从而产生格式正确的JavaScript数组?
预期输出应为:
var list = ['a','b','c'];
非常感谢您的帮助。
您不需要自己执行此操作,PHP有一个名为json_encode
的函数json_encode
您的需要。 如果由于某种原因您没有PHP 5.2.0,则该页面的注释中有很多实现可以解决此问题。
使用implode()粘合数组元素。 会注意逗号
//later that page..in JavaScript
var list = ['<?=implode("', '", $array)?>'];
您可以使用它来生成json数组:
$list = json_encode($array);
然后用Javascript阅读:
var list = <?=$list?>
如何将数组转换为有效的JSON对象?
var list = JSON.parse("<?php echo json_encode($array); ?>");
无论如何,您真的需要即时生成JS代码吗? 有没有其他方法可以完成您的任务? JS生成通常被认为是一种hack,在许多情况下可以轻松避免。
这将达到目的:
<?php
$filtered = array();
foreach($array as $value) {
$filtered[] = $value->some_letter_field;
}
echo 'var list = ' . json_encode($filtered);
?>
如果出于任何原因坚持保留当前代码,请执行以下操作:
var list = [
<?php foreach($array as $value): ?>
$output[] = "'".$value->some_letter_field."'";
<?php endforeach; ?>
echo implode(',', $output);
];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.