如何将PHP中的数组值用于JavaScript?

7

对于我来说,一直存在一个问题,即如何在JavaScript中使用由我的PHP脚本定义的数组值。

例如,考虑从文件中读取一些值并在JavaScript中使用它们。

您打算如何实现?

5个回答

16
你可以使用json_encode函数,安全地返回一个JSON对象,你可以直接在JavaScript中使用它。
<?php
  $phpArray = array("foo", "bar", "baz");
  //....
?>

<script type="text/javascript">
var jsArray = <? echo json_encode($phpArray); ?>;
</script>

输出:

<script type="text/javascript">
var jsArray = ["foo","bar","baz"];
</script>

好的回答,但是如果在第7行使用完整的PHP标记会更加酷炫,而不是使用短标记。 - Mohd Abdul Mujib

3
像这样吗?
<?php
  # create PHP array:
  $php_array = array("one", "two", "three");

  # "pass" php array to JS array:
  echo "<script language='JavaScript'>\n";
  echo "var js_array = new Array();\n";

  $ix = 0;
  foreach($php_array as $key => $value) {
     echo "js_array[$key] = $value;\n";
  }

  # Rest of JavaScript.....
  echo "</script>\n";
?>

更多信息请参考:
http://www.scratch99.com/2008/03/creating-javascript-array-dynamically-from-php-array/


更好的写法:echo "\n"; - Yaakov Shoham
1
不需要$key值,因为JS数组不是哈希表。只需使用js_array.push($value)即可。 - bdl

2

JSON是您的选择,自PHP 5.x版本以来,PHP包含一个json_encode()函数。

<script type="text/javascript">
var arr = <?php echo json_encode($php_array); ?>
</script>

通常情况下,一些热心的人会为旧版本的PHP编写json_encode()函数,请查看php.net上的评论


1

你的 PHP 数组需要以某种方式暴露给 JavaScript。如果你想让数组在初始页面加载时对 JS 可用,可以像这样做:

<script type="text/javascript">
    myJSArray = <?php echo function_that_generates_array_in_js_syntax($myPHPArray); ?>;
</script>

如果变量不需要在初始页面加载时创建,您可以使用类似的方法,但使用 AJAX 调用。只需让您的 PHP 脚本响应格式化为 JS 的数组,并将调用结果存储在您的 JS 变量中即可。

1

PHP到JS的变体,不使用json扩展,而是使用join/implode和无循环结构:

<?php
$array= array('one','two','three');
$js_array= '["'. join('","', $array) .'"]';
?>
<script type="text/javascript">
var js_array= <?php echo $js_array;?>;
alert(js_array);
</script>

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