如何以这种方式格式化通过Ajax返回javascript的php数组?

如何以这种方式格式化通过Ajax返回javascript的php数组?,php,arrays,ajax,Php,Arrays,Ajax,目前,我通过Ajax返回一个PHP数组,格式如下: $months = array(November, December, January); 将值返回到Javascript后,我需要以这种方式对其进行格式化,以使其与我正在使用的js库兼容: var months = [[0, "November"], [1, "December"], [2, "January"]]; 我尝试将其作为一个关联数组从PHP返回,并对其进行json编码,我收到: [["November"],{"1":"Dece

目前,我通过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_编码后消失?这种格式与之前的格式相同吗?

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,“11月”],[1,“12月”],[2,“1月”],[3,”2月”]

谢谢,它在这种格式下工作得非常好。如果我可以问,我将如何以编程方式创建该数组结构?我这样做是通过一个循环:$months=array()$计数器=0;foreach($dateRange as$month=>$amount){$months[]=array($counter=>$month);}但一旦我对其进行编码,我将再次使用以下格式:[[“十一月”],{“1”:“十二月”},{“2”:“一月”}],该格式省略了0索引并使用大括号。@MiguelV用一些关于如何在循环中构造它的额外信息更新了答案。主要的事情不是让它成为一个带有
$x=>$y
的关联数组,而是使用
$x,$y
谢谢,我是在做一个关联数组而不是两个数组项。你是最棒的。