【问题标题】:How to encode 2 dimentional PHP array to Javascript Array?如何将二维 PHP 数组编码为 Javascript 数组?
【发布时间】:2010-02-12 05:06:13
【问题描述】:

这是我的问题,我有一个这样的 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,]];

提前谢谢...

【问题讨论】:

    标签: php json javascript


    【解决方案1】:

    您使用的是哪个版本的 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 中已得到纠正?)

    【讨论】:

    • 我认为多维数组中的 json_encode 存在错误...有什么想法吗?
    • 哇,特雷兹。为你如此粗心地对待一个好的答案感到羞耻。
    • @adam,你能不能给我其他的解决方案,让它在 5.2.1 版本中工作
    • 对不起,我对上面的答案很困惑。
    【解决方案2】:

    您的原始解决方案对我有用:

    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]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-06
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多