我有一个来自SQL查询的数组,它遵循以下格式:
[
["2012-10-01", 1, 3890],
["2012-10-01", 0, 8900],
["2012-09-21", 0, 8900],
["2012-09-21", 1, 8900],
...
]
最后我想得到0和1的计数。因此,例如,对于2012-10-01的日期,我将得到值1具有计数3890并且值0具有计数8900.我想知道如何迭代此数组以构建最终数组像这样:
$final_array["value0"]["2012-10-01"] = 3890
$final_array["value1"]["2012-10-01"] = 8900
$final_array["total"]["2012-10-01"] = 12790
考虑到日期没有值0或1的计数,而值0和1的顺序并不总是相同。
所以第一个例子可能是这样的:
[
["2012-10-01", 1, 3890],
["2012-09-21", 1, 8900],
["2012-09-21", 0, 8900],
...
]
正如您所看到的,第一个日期缺少值0,最终数组仍然需要像这样:
$final_array["value0"]["2012-10-01"] = 3890
$final_array["value1"]["2012-10-01"] = 0
答案 0 :(得分:2)
foreach ($array1 as $value){
$final_array["value".$value[1]][$value[0]] = $value[2];
}
以$array1
作为您的第一个数组
答案 1 :(得分:1)
这是代码。你真的应该先尝试自己解决,因为这是基本的数组映射。
foreach($initialarray as $data){
$finalarray["value".$data[1]][$data[0]]=$data[2];
}
编辑:这是满足您更新要求的代码:
$initialarray = array(array("2012-10-01", 1, 3890), array("2012-09-21", 1, 8900), array("2012-09-21", 0, 8900));
$finalarray["value0"]=array();
$finalarray["value1"]=array();
foreach($initialarray as $data){
$finalarray["value".$data[1]][$data[0]]=$data[2];
$finalarray["value".round(cos($data[1]*pi()/2))][$data[0]]=$finalarray["value".round(cos($data[1]*pi()/2))][$data[0]]?$finalarray["value".round(cos($data[1]*pi()/2))][$data[0]]:0;
}
echo "<pre>";
var_dump($finalarray);
echo "<pre>";
答案 2 :(得分:0)
这将有效:
$result = array('value0' => array(), 'value1' => array());
foreach ($array as $value) {
$result[('value' . $value[1])][$value[0]] = $value[2];
}