修改json数组顺序


change the json array order

我正在使用CI开发一个应用程序。我有一个问题,我需要一个帮助。这是我的问题。我用php生成了一个数组:

Array
(
[0] => Array
    (
        [0] => 3
        [1] => 0
    )
[1] => Array
    (
        [0] => 2
        [1] => 0
    )
[2] => Array
    (
        [0] => 1
        [1] => 246
    )
[3] => Array
    (
        [0] => 0
        [1] => 4528
    )
)

这是生成上述数组的代码。

public function get_previous_months_total()
{
    $f = 1;
    $dataset2 = array();
    $result;
    for($i=0;$i<4;$i++){    
            $firstday = mktime(0, 0, 0, date('m')-$f, 1, date('Y'));
            $lastday = mktime(0, 0, 0, date('m')-$i, 0, date('Y'));
            $end = date("Y-m-d", $lastday);
            $start = date("Y-m-d", $firstday);
            $f++;               
            $result = $this->LineChart_Model->get_months_total($start,$end);
            foreach ($result as $return_result ){
                    $dataset2[] =        array($i,int)$return_result['SUM(operation_production)']);
            }
    }   
    $mon = array(array_reverse($dataset2));
    return $mon;
}

下面是模型中的代码。

public function get_months_total($start,$end){
    $sql = "SELECT SUM(operation_production) FROM plant WHERE date BETWEEN '".$start."' AND        '".$end."' ORDER BY operation_id DESC";
    $result = $this->linechart_db->query($sql);
    return $result->result_array();
}

之后,我使用json_encode编码,结果如下:

var total = [
    [
        3,
        0
    ],
    [
        2,
        0
    ],
    [
        1,
        246
    ],
    [
        0,
        4528
    ]
];

我需要把顺序改成:

var total = [
    [
        0,
        0
    ],
    [
        1,
        0
    ],
    [
        2,
        246
    ],
    [
        3,
        4528
    ]
];

请帮我一下。我试了很多方法,但没有一个奏效。

您应该能够使用array_mulisort()函数来解决这个问题。

* *编辑:

经过进一步的调查,array_multisort()函数无法给出你的答案,我道歉。

因为数组的值已经设置好了,你必须对它们进行操作才能得到你想要的结果。以下是我的工作(在你的代码中,只需将$oldArray变量替换为你的数组名称):

$replacementArray = array();
$i                = 0;
foreach($oldArray as $array) {
    $newArray =[$i, $array[1]];
    array_push($replacementArray, $newArray);
    $i++;
}
$finalArray = array_replace($oldArray, $replacementArray);
$json       = json_encode($finalArray);
echo $json;

输出如下:

[[0,0],[1,0],[2,246],[3,4528]]