这是我的问题,我有一个像这样的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,]];
提前致谢...
答案 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]]