【问题标题】:How to I format a php array that is returned to javascript via Ajax in this way?如何格式化以这种方式通过 Ajax 返回到 javascript 的 php 数组?
【发布时间】:2016-04-26 12:19:56
【问题描述】:

目前我通过 Ajax 以以下形式返回一个 PHP 数组:

$months = array(November, December, January);

一旦我将值返回到 Javascript,我需要以这种方式对其进行格式化,以使其与我正在使用的 js 库兼容:

var months = [[0, "November"], [1, "December"], [2, "January"]];

我尝试将它作为一个关联数组从 PHP 和 json 编码返回到我收到的:

[["November"],{"1":"December"},{"2":"January"}]

为什么索引号 0 消失一次json_encoded?而且这个格式和之前的格式一样吗?

【问题讨论】:

    标签: php arrays ajax


    【解决方案1】:

    Javascript 会将关联数组转换为 JavaScript 对象。

    获取格式的最简单方法是使用这种数组格式:

    $months = array(
        array(0, 'November'), 
        array(1, 'December'),
        array(2, 'January')
    );
    

    编码后应该返回以下内容;

    [[0,"November"],[1,"December"],[2,"January"]]
    

    编辑: 根据要求动态创建它:

    $months    = array(); 
    $dateRange = array(
        'November' => 1000, 
        'December' => 1500, 
        'January' => 300, 
        'February' => 600
    );
    
    $counter = 0;
    foreach ($dateRange as $month => $amount) { 
        $months[] = array($counter, $month);
        $counter++; 
    } 
    
    echo json_encode($months);
    

    输出:[[0,"November"],[1,"December"],[2,"January"],[3,"February"]]

    【讨论】:

    • 感谢它以这种格式完美运行。如果我可能会问,我将如何以编程方式创建该数组结构?我这样做的方式是循环: $months = array(); $计数器 = 0; foreach($dateRange as $month => $amount) { $months[] = array($counter => $month); } 但是一旦我对其进行编码,我又一次得到了格式:[["November"],{"1":"December"},{"2":"January"}],它省略了 0 索引和使用花括号。
    • @MiguelV 用一些关于如何在循环中构造它的额外信息更新了答案。最主要的是不要将其与$x => $y 做成关联数组,而只需使用$x, $y
    • 谢谢,我在做一个关联数组而不是两个数组项。你最好。
    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2018-04-04
    相关资源
    最近更新 更多