如何将2维PHP数组编码为Javascript数组?

时间:2010-02-12 05:06:14

标签: php json javascript

这是我的问题,我有一个像这样的php数组:

$output = array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3));

将数组编码为json之后我得到了这个:

$output = {"1":[1,1,1,1],"2":[2,2,2,2],"3":[3,3,3,3]}

我想要的只是将PHP数组传递给Javascript,以便JS看起来像这样:

var output = [[1,1,1,1],[2,2,2,2],[3,3,3,3,]];

提前致谢...

2 个答案:

答案 0 :(得分:4)

您使用的是哪个版本的PHP?

使用PHP 5.2.10,我得到了你所要求的:

$output = array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3));
$json = json_encode($output);

echo $json . "\n";

输出:

$ php temp.php
[[1,1,1,1],[2,2,2,2],[3,3,3,3]]


至少,这是没有JSON_FORCE_OBJECT选项 - 在PHP 5.3中添加


也许您可以在json_encode manual page上的用户注释中找到有趣的内容?

例如,simoncpu says

  

注意事项:如果你是   想知道为什么json_encode()编码   您的PHP数组作为JSON对象   你可以代替JSON数组   想要仔细检查你的数组键   因为json_encode()假设你   如果你的键是数组,则数组是一个对象   不顺序。

如果你在PHP的bugtracker上搜索json_encode+array+object,也许你会得到一些有趣的结果?
(例如,有些人认为这是一个错误,在最近的PHP版本中已得到纠正?)

答案 1 :(得分:0)

您的原始解决方案适合我:

adam@fsck:~:0$ php -r 'echo json_encode(array(array(1,1,1,1),array(2,2,2,2),array(3,3,3,3)));'
[[1,1,1,1],[2,2,2,2],[3,3,3,3]]