【问题标题】:Generating a JavaScript array from a PHP array从 PHP 数组生成 JavaScript 数组
【发布时间】:2010-01-21 13:35:24
【问题描述】:

假设我有一个字符串$var:

//php code

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

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

我想在 javascript 中使用这个 all 值:

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

如何在 PHP 中生成 JavaScript?

【问题讨论】:

  • 为什么你要先将值加载到 php 中的 vars 中,然后再将它们重载到 javascript 中?
  • 变量名 = ($exp[0],$exp[1],$exp[2]);老实说,我不知道您在问什么,但这就是您在示例中所做的...
  • @Younes:有时会很有帮助...如果您不想显示,例如,在页面加载后不触发 ajax 请求而存储在 Javascript 会话中的变量.
  • @vipinsahu - 您能否花点时间查看 Karl 的答案,如果它适合您,请接受 - 他比我的好!

标签: php javascript


【解决方案1】:

我原以为json_encode 会是最可靠和最简单的方法。

例如

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

【讨论】:

  • +1 这是将任何 PHP 值转换为 JavaScript 值文字的最佳方式。如果您在 <script> 块中,请记住至少使用 JSON_HEX_TAG 标志,以避免字符串中的 </ 破坏脚本块,或使用 JSON_HEX_TAG|JSON_HEX_AMP 以实现 XHTML 兼容性。
  • 我也是+1 - 不知道json_encode - 我可以建议添加一些OP可以使用的示例代码吗?希望他会接受你的回答,我可以删除我的。
  • 按照建议添加了一些示例代码(我一开始就应该这样做)。
  • 这不是生成一个javascript对象而不是一个数组吗?
【解决方案2】:

Karl B 的答案更好 - 使用它!

难道不是这样更简单的方法吗:

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

然后无论你在哪里吐出 JavaScript(假设你可以在那里使用 PHP):

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

但这并不能正确处理引用的值 - 如果你想要这样,你最好使用 fgetscsv 等。

如果您决定使用explode,那么您可以在输出中使用它的另一半,implode

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

【讨论】:

  • 你应该记住转义引号。如果$var = "he'llo,world" 则上面的代码将失败。在explode 之前使用array_walk($var, 'addslashes');
  • JavaScript 中的字符串声明与 PHP 中的不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2016-04-27
  • 1970-01-01
  • 2013-08-06
  • 2015-06-24
  • 1970-01-01
相关资源
最近更新 更多