迭代结果数组,两个两个

时间:2012-10-23 07:19:45

标签: php mysql loops array-map

我有一个来自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

3 个答案:

答案 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>";

DEMO

答案 2 :(得分:0)

这将有效:

$result = array('value0' => array(), 'value1' => array());
foreach ($array as $value) {
    $result[('value' . $value[1])][$value[0]] = $value[2];
}