2012-08-22 64 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代碼中聲明的某個函數。