从PHP数组生成JavaScript数组

4
假设我有一个字符串$var
//php code

$var = "hello,world,test";
$exp = explode(",",$var);

现在我得到了数组 exp[0],exp[1],exp[2],分别为 'hello', 'world''test'

我想在 JavaScript 中使用这些值:

var name = ['hello','world','test'];

我该如何在PHP中生成JavaScript代码?

你为什么要在PHP中先将值加载到变量中,然后再重载到JavaScript中呢? - Younes
变量名称为($exp[0],$exp[1],$exp[2])。说实话,我不知道你在问什么,但这是你在示例中要做的事情... - Younes
1
@Younes:有时候很有用……如果你想在页面加载后不触发ajax请求的情况下,使用Javascript显示存储在会话中的变量。 - Harmen
@vipinsahu - 能否花一点时间审查一下Karl的答案,并如果它适用于您就接受它 - 他的比我的好! - Dominic Rodger
2个回答

20

我本以为json_encode是最可靠和最简单的方式。

例如:

$var = "hello,world,test";
$exp = explode(",",$var);
print json_encode($exp);

这是将任何PHP值转换为JavaScript值文字的最佳方法。 如果您在<script>块中,请记得使用至少JSON_HEX_TAG标志,以避免字符串中的</破坏脚本块,或者使用JSON_HEX_TAG | JSON_HEX_AMP以实现XHTML兼容性。 - bobince
我也点赞,之前不知道json_encode这个函数,能否建议添加一些示例代码让提问者使用呢?希望他能接受你的答案,这样我就可以删除我的回答了。 - Dominic Rodger
1
已按建议添加了一些示例代码(这也是我一开始应该做的)。 - Karl B
这会产生一个 JavaScript 对象,而不是一个数组,是吗? - showdev

5

Karl B的回答更好-请使用他的方法!

难道不可以这样更简单吗:

$var = "hello,world,test";
$var = str_replace(",", "','", $var);

如果你要在JavaScript中使用PHP(假设你可以在那里使用PHP):

var name = ['<?php echo $var; ?>'];

这种方法无法正确处理带引号的值 - 如果需要这样做,最好使用 fgetcsv 等功能。

如果你决定使用 explode,那么可以在输出时使用它的另一半,implode,像这样:

var name = ['<? php echo implode("','", $var); ?>'];

你应该记得转义引号。如果 $var = "he'llo,world",那么上面的代码将失败。在 explode 之前使用 array_walk($var, 'addslashes'); - Crozin
JavaScript中的字符串声明与PHP中的不同。 - Gumbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接