2012-08-22 38 views
-5

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

我想这一点,但没有奏效:

$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接受以正确呈现图表。

+3

PHP正在服务器上执行并发送浏览器HTML和JavaScript。你在哪里期待这发生? – databyss

+0

将它包装在'

-1

只需使用var arrayholder = <?php json_encode($usershours);?>;如果arrayholder有输出为字符串(而不是代码)

+2

分号不需要我ñ只要你避免了一些模糊的语法陷阱。 –

+0

1.和2.分别是无关和错误的。 – meagar

+0

** @ Dan Grossman:**据我所知,只有表达式需要分号';(...)','; [...]和'; /.../',还有' “严格使用”;'出于某种原因。 – elclanrs

-2

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

话虽如此

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

是我如何做到这一点,当我确定与拍摄我自己在脚下

+0

通过咬你我的意思是在你的JavaScript中出现一个意外的错误,由于你无法控制的某些配置。 –

+0

为什么要将数据嵌入到HTML元素中,只需在js中回显就可以了? – jeroen

+0

这是一个强加给自己的非常武断的规则,也与这个问题非常不相干。 – meagar

3

尽管用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代码中声明的某个函数。