我有一个名为$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 - 我需要这种格式,因为这是Google图表API接受正确呈现图表的格式。
答案 0 :(得分:4)
从我收集的内容来看,您希望在客户端计算机上使用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>
答案 1 :(得分:3)
虽然将PHP与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代码中声明的函数。
答案 2 :(得分:-1)
如果必须将var arrayholder = <?php json_encode($usershours);?>;
输出为字符串(而不是代码),则只需使用arrayholder
答案 3 :(得分:-2)
一般建议:不要尝试从PHP渲染有效的JavaScript。它最终会给你带来一些替代解决方案:将数据嵌入到HTML元素中并通过JavaScript和Ajax提取它
说完了
?>
(function () {
console.log(<?= json_encode($phpVar); ?>);
}());
<?
当我在脚下射击时,我是如何做到这一点的