在Javascript代码中显示PHP数组变量


Display PHP array variable inside Javascript code

我有一个名为$usershours的php变量,它包含一个数组,我想在Javascript代码中回显它。我该怎么做?

我试过这个,但没用:

$usershours = "
data.addRow([ new Date(2012,4,1),50119]).+'<br>+'.
data.addRow([ new Date(2012,4,2),242575])";
<script type="text/javascript">
document.write($arrayholder);
</script>

我希望输出是这样的:

data.addRow([ new Date(2012,4,1),50119]) 
data.addRow([ new Date(2012,4,2),242575])

PS-我需要这个格式,因为这是谷歌图表API接受的正确呈现图表的格式。

据我所知,您希望此代码在客户端机器上由javascript运行:

data.addRow([ new Date(2012,4,1),50119]) 
data.addRow([ new Date(2012,4,2),242575])

简单地说:

<script type="text/javascript">
<?php 
$usershours = "
data.addRow([ new Date(2012,4,1),50119])
data.addRow([ new Date(2012,4,2),242575])";
echo $usershours;
?>
</script>

尽管用JS扰乱PHP远非最佳方法,但这也会让代码更整洁。

让我们假设你的数据来自一个数组[从数据库或文件中提取],组成如下:

$data = array(
    array("date" => "2012-04-01", "id" => 50119),
    array("date" => "2012-04-02", "id" => 242575)
);

通过json_encode($data),您可以得到以下输出:

[
  { date : "2012-04-01", id : 50119},
  { date : "2012-04-02", id : 242575}
]

现在您知道了如何将数据从PHP结构转换为Javascript结构,只需编写以下内容即可:

<script>
  var serverData = <?php echo json_encode($data) ?>;
  for(var i = 0; i < serverData.length; i++)
  {
     data.addRow([ new Date( serverData[i].date ), serverData[i].id ]);
  }
</script>

假定data.addRow()是JS代码中某个地方声明的函数。

如果arrayholder必须输出为字符串(而不是代码)

,只需使用var arrayholder = <?php json_encode($usershours);?>;

一般建议:不要尝试从PHP呈现有效的JavaScript。它最终会咬到你,一些替代解决方案:将数据嵌入HTML元素中,并通过JavaScript和Ajax 提取数据

已经说过

?>
(function () {
   console.log(<?= json_encode($phpVar); ?>);
}());
<?

当我可以朝自己的脚开枪时,我是如何做到的