我有一个名为$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); ?>);
}());
<?
当我可以朝自己的脚开枪时,我是如何做到的