我正在使用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]]