更改json数组顺序

时间:2014-08-24 14:03:57

标签: php arrays json

Iam使用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
    ]
];

请帮我解决这个问题。我尝试了很多方法,但都没有。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

您应该能够使用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]]