如何将PHP数组的值分配给JavaScript数组

18

如何将PHP数组的值赋给JavaScript数组?

使用下面的PHP代码,我正在将数据存储在PHP数组中:

<?php
$str_query="SELECT title,description FROM tablename ORDER BY title";
$rs_sch=GetRecordset($str_query); 

$int_count=0;
$schd_arr = array();
while(!$rs_sch->EOF())
{
$schd_arr[$int_count] = $rs_sch->Fields("title").": ".$rs_sch->Fields("description");
$rs_sch->MoveNext();
$int_count++;
}
?> 

使用以下JavaScript代码,我正在尝试将PHP数组数据存储到JavaScript数组中

在下面提到的2个位置上应该写什么以使我的代码能够正常工作?

<script type="text/javascript" language="javascript">
var pausecontent=new Array()
for (sch_cnt=0; sch_cnt<*Here I want to assign value of $int_count php variable*; sch_cnt++)
{
pausecontent[sch_cnt]=<?php *Here I want to assign php array and counter values (something like this - $schd_arr[sch_cnt];)* ?>;
}
</script>

1
如果脚本位于与 PHP 源代码相同的文件中,请确保先执行代码,然后再引用它。否则,请添加一些关于您要做什么的信息。 - nikolas
5个回答

64

你可以直接使用json_encode函数。它易于使用且生成有效的JavaScript,因此非常稳定:

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

4
特别是这将产生有效的 JavaScript。更可取。 - hakre

50

你不能那样循环,你需要循环 PHP 数组并将其 push 到 JavaScript 数组中:

<script type="text/javascript" language="javascript">
    var pausecontent = new Array();
    <?php foreach($schd_arr as $key => $val){ ?>
        pausecontent.push('<?php echo $val; ?>');
    <?php } ?>
</script>

3

我认为你最好先将数组传递给你的JavaScript。代码如下:

var theVariableYouWantTheArrayIn = <?php echo json_encode($theArrayYouWantInJavascript); ?>

之后它就是一个普通的js数组,因此您可以使用像.length这样的属性,这将很可能使循环更容易。


1

我在做这件事时也遇到了同样的问题,但最终找到了最佳解决方案

    <script>       
    var arr=[];
    arr.push('<?php
             include('conn.php');
        $query = "SELECT *FROM c group by name";
        $res = mysqli_query($conn,$query) or die(mysqli_error($conn));

        while($data = mysqli_fetch_array($res))
        {


             echo $data["name"];
        }
             ?>');
        </script>

0

以上两个答案都很好。

  1. 遍历你从数据库查询结果得到的数组,并将每个值添加到一个新的 PHP 变量中,
  2. 添加一个计数器,在每次迭代期间递增它,以确保在最后一个元素之后不添加逗号,
  3. 如果数组中的元素数量大于 1,则像往常一样创建数组,否则创建一个新数组,其中包含 1 个元素,并将你的 PHP 数组值分配给索引 0。

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