php二维数组处理
程序员文章站
2023-12-26 08:53:57
...
$arr=array(
array('amount'=>100,'date'=>'2014-03-29'),
array('amount'=>120,'date'=>'2014-03-30'),
array('amount'=>200,'date'=>'2014-03-31')
);
怎么转化成以日期为准,amount为之前amount的和?
$arr=array(
array('amount'=>100,'date'=>'2014-03-29'),
array('amount'=>220,'date'=>'2014-03-30'),
array('amount'=>420,'date'=>'2014-03-31')
);
回复内容:
$arr=array(
array('amount'=>100,'date'=>'2014-03-29'),
array('amount'=>120,'date'=>'2014-03-30'),
array('amount'=>200,'date'=>'2014-03-31')
);
怎么转化成以日期为准,amount为之前amount的和?
$arr=array(
array('amount'=>100,'date'=>'2014-03-29'),
array('amount'=>220,'date'=>'2014-03-30'),
array('amount'=>420,'date'=>'2014-03-31')
);
function sd($a,$b) {if($a['date'] == $b['date']) return 0; return $a['date'] >$b['date'] ? 1 : -1;
usort($arr, 'sd');
$amount = 0;
foreach($arr as &$item) {
$amount += $item['amount'];
$item['amount'] = $amount;
}
$originArr=array(
array('amount'=>100,'date'=>'2014-03-29'),
array('amount'=>120,'date'=>'2014-03-30'),
array('amount'=>200,'date'=>'2014-03-31')
);
$newArr1 = array();
$newArr2 = array();
$tempArr = array();
$resultArr = array();
foreach($originArr as $el) {
$newArr1[$el['date']] = $el['amount'];
}
foreach ($newArr1 as $k1 => $v1) {
foreach ($newArr1 as $k2 => $v2) {
$v1 += ($k1 > $k2) ? $v2 : 0;
}
$newArr2[$k1] = $v1;
}
foreach($newArr2 as $key => $value) {
$tempArr['amount'] = $value;
$tempArr['date'] = $key;
$resultArr[] = $tempArr;
}
100,'date'=>'2014-03-29'),
array('amount'=>200,'date'=>'2014-03-31'),
array('amount'=>120,'date'=>'2014-03-30'),
);
$total = 0;
//以日期递增排序
uasort($arr, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
array_walk_recursive($arr, function(&$val, $key) use (&$total) {
if ($key === 'amount') {
$total += $val;
$val = $total;
}
});
print_r($arr);