2014-02-18 29 views
1

我在我的索引頁上使用了javascript幻燈片放映。而不是陣列是靜態的,我想用PHP構建數組,並添加類似於和包含語句的東西。由於該數組是在javascript內我不確定如何最好的做到這一點。這裏是陣列的樣本:將php創建的數組添加到javascript中

var fadeimages=new Array() 
    fadeimages[0]=["pics/fade_pic_1.jpg", "", ""] 
    fadeimages[1]=["pics/fade_pic_2.jpg", "", ""] 
    fadeimages[2]=["pics/fade_pic_3.jpg", "", ""] 

這裏是構建陣列的PHP文件。它效果很好。我只是不知道如何將它放在javascript代碼中:

<?php // Build fadepic array for index page 
$x=0; 
foreach (glob("pics/*.*") as $filename) { 
$filename = substr($filename, 20); //gets just the file name 
echo "fadeimages[".$x."]=[\"pics/".$filename."\", \"\", \"\"]<br>"; 
$x++; 
} ?> 

非常感謝您爲我提供的任何幫助!

+0

轉換的PHP版本_JSON_ –

+2

你可以建立PHP的陣列爲正常,然後把它變成了JavaScript的'var fadeimages = <?php echo json_encode($ array); ?>;' – SmokeyPHP

+0

如果您將結果放入'eval()'函數中,您將擁有數組,但是這樣做是相當不清楚的。如上所述更好地使用JSON。 – Liberat0r

回答

0

您可以使用json_encode()

<?php 
//buildfadepic.php 
$result = array(); 
foreach (glob("pics/*.*") as $filename) { 
    $result[] = array("pics/".$filename, "", ""); 
} 
print json_encode($result); 

這會給你有效的JSON(因此有效的JavaScript)。如果你想混合JavaScript和PHP,你應該能夠做到現在這個樣子

var fadeimages = <?php include "buidfadepic.php"; ?>; 

由於buidfadepic.php會給你這樣的

[ ["pics/foo.jpg", "", ""], ["pics/bar.png", "", ""], ...] 

的結果,或者如果你有兩個在相同的文件,只是打印/回顯而不是包含在評論中的建議。

+0

更好的辦法是返回$結果,並從視圖json_encode,因爲buildfadepic.php應該只做建設恕我直言 –

+0

我不能讓這個工作。圖像應該是空白的區域。 – user3301501

0

正確的方法,正如評論說將使用json_encode。 例如:

服務器

<?php 
$files = array('file1.jpg', 'file2.jpg', 'file3.jpg'); 
$view->assing_var('files', $files); // if you're separating the view from the php, else just do return for including 

視圖(客戶端):

<script type="text/javascript"> 
var images = <?=json_encode($files)?>; 
</script> 
0

我與其他海報是JSON將是一個乾淨的方式做到這一點達成一致。但你不一定來,你也可以包括陣列直線距離:

<script type="text/javascript"> 
    var fadeimages=new Array(); 
    <?php 
    echo "fadeimages[0] = ...;"; // Include code to create array 
    ?> 
</script> 

只是爲了澄清(根據意見,我們似乎有一點誤解的):你可以放PHP代碼裏面<script>標籤。畢竟,PHP代碼在服務器端運行,運行JavaScript的客戶端也會看到結果輸出。所以只要你的PHP腳本不會在JavaScript中產生語法錯誤,你應該可以。

的另一種方法,如果腳本變得非常大,是包含你的PHP腳本作爲外部JavaScript:

<script type="text/javascript" src="list_fade_images.php"></script> 
+0

當然這不起作用。 – user3301501

+0

@ user3301501,這對我來說並不明顯。請解釋爲什麼不呢? – CompuChip

+0

您的示例中不能將php代碼直接嵌入到javascript中。 – user3301501