2014-02-11 68 views
0

我在PHP中的數組可以調用它:簡單的PHP數組Javascript數組

$nums = array(10,25,52,32,35,23); 

我想將它發送給我的javascript函數如下:

var nums=[10,25,52,32,35,23]; 

我怎樣才能做到這一點? (我的JavaScript文件名是 「nums.js」)

編輯:

nums.js是一個JavaScript代碼。它改變了html中表的值。但是這些值只存在於php中。所以我必須將值發送給JavaScript。

回答

2

PHP> = 5.2

json_encode功能是實現這一目的:

<?php echo 'var nums=' . json_encode(array(10,25,52,32,35,23)) . ';'; ?> 

文檔:http://php.net/json_encode

PHP < 5.2

如果您不能使用json_encode,take a look at this post來定義等效方法。

+0

這將數組打印到我的網頁中。但不改變我的JavaScript的值。我的代碼是這樣的:<?php $ nums = array(10,25,52,32,35,23); ?>我想更改nums.js文件中的值。 – user3179249

+1

@ user3179249最簡單的方法是在外部javascript之前添加新的腳本標記,例如:'' – Givi

+0

試過這種方式,我的數組仍然沒有被覆蓋。 – user3179249

0

你也可以使用json_encode(),但只能從PHP 5.2 看多:http://us3.php.net/manual/fr/function.json-encode.php

,或者您可以使用此功能:只要

function php2js ($var) { 
    if (is_array($var)) { 
        $res = "["; 
        $array = array(); 
        foreach ($var as $a_var) { 
            $array[] = php2js($a_var); 
        } 
        return "[" . join(",", $array) . "]"; 
    } 
    elseif (is_bool($var)) { 
        return $var ? "true" : "false"; 
    } 
    elseif (is_int($var) || is_integer($var) || is_double($var) || is_float($var)) { 
        return $var; 
    } 
    elseif (is_string($var)) { 
        return "\"" . addslashes(stripslashes($var)) . "\""; 
    } 
    return FALSE; 
} 
+0

這個第一個建議應該是使用'json_encode()',而不是將它作爲事後使用。即使您沒有原生的PHP json_encode(),也有PHP庫可供您執行此操作。您不應該從數組手動構建JSON表示。 –

0

爲你的JavaScript文件正在被解析被髮送到客戶端之前,PHP,那麼這應該工作:

<?php echo "var nums=[" . implode(',', $nums) . "];"; ?> 
+0

+1,簡單,好用的PHP。雖然我聽說使用單引號可以加快頁面加載速度;)。 –

+0

解析你的意思是什麼? 我運行我的JavaScript在這樣的頁面末尾: user3179249

+0

@DanielLisik從邏輯上說,這是真的,但我無法想象它會產生顯着的差異。儘管如此,實際上我通常對文本字符串使用單引號。 – Rob

0

只需json_encode()該數組,然後將其輸出爲javascript中的數組文字。

<?php 
$nums = array(10,25,52,32,35,23); 
$nums_json = json_encode($nums); 
?> 
<script type="text/javascript"> 
var nums = <?php echo $nums_json; ?>; 
</script>