2014-02-11 31 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>