将包含日期的PHP数组筛选到年度摘要中
我正在研究一种基于PHP数组内容在某个月内创建事务摘要的方法 预期结果(免除布局):将包含日期的PHP数组筛选到年度摘要中,php,arrays,datetime,Php,Arrays,Datetime,我正在研究一种基于PHP数组内容在某个月内创建事务摘要的方法 预期结果(免除布局): ------------------------------------------- | December 2009 | 12 | | January 2010 | 02 | | February 2010 | 47 | | March 2010 |
-------------------------------------------
| December 2009 | 12 |
| January 2010 | 02 |
| February 2010 | 47 |
| March 2010 | 108 |
| April 2010 | 499 |
-------------------------------------------
Array
(
[0] => Array
(
[name] => 2009-10-23
[values] => Array
(
[0] => INzY2MTI4ZWM4OGRm
)
)
[1] => Array
(
[name] => 2009-10-26
[values] => Array
(
[0] => IYmIzOWNmMmU3OWQz
)
)
[2] => Array
(
[name] => 2009-11-23
[values] => Array
(
[0] => INTg4YzgxYWU1ODkx
[1] => IMjhkNDZkY2FjNDhl
)
)
[3] => Array
(
[name] => 2009-11-24
[values] => Array
(
[0] => INTg4YzgxYWU1ODkx
[1] => INTg4YzgxYWU1ODkx
)
)
[4] => Array
(
[name] => 2009-12-01
[values] => Array
(
[0] => IMWFiODk5ZjU1OTFk
)
)
基于我的数组:
-------------------------------------------
| December 2009 | 12 |
| January 2010 | 02 |
| February 2010 | 47 |
| March 2010 | 108 |
| April 2010 | 499 |
-------------------------------------------
Array
(
[0] => Array
(
[name] => 2009-10-23
[values] => Array
(
[0] => INzY2MTI4ZWM4OGRm
)
)
[1] => Array
(
[name] => 2009-10-26
[values] => Array
(
[0] => IYmIzOWNmMmU3OWQz
)
)
[2] => Array
(
[name] => 2009-11-23
[values] => Array
(
[0] => INTg4YzgxYWU1ODkx
[1] => IMjhkNDZkY2FjNDhl
)
)
[3] => Array
(
[name] => 2009-11-24
[values] => Array
(
[0] => INTg4YzgxYWU1ODkx
[1] => INTg4YzgxYWU1ODkx
)
)
[4] => Array
(
[name] => 2009-12-01
[values] => Array
(
[0] => IMWFiODk5ZjU1OTFk
)
)
无论我做了什么尝试,我都一无所获。特别是添加不包含任何变量的月份。如果我理解清楚:
$A
,将每个元素设置为0
$v
计算$v['name']
的月份$m
,计算$v['values']
中的元素数,并将该元素数添加到$A[$m]
$A
的内容$summary = array();
foreach($transactions as $t)
{
$month = substr($t['name'], 0, 7);
if(!isset($summary[$month]))
$summary[$month] = 0;
if(isset($t['values']))
$summary[$month] += count($t['values']);
}
$A
,将每个元素设置为0
$v
计算$v['name']
的月份$m
,计算$v['values']
中的元素数,并将该元素数添加到$A[$m]
$A
的内容$summary = array();
foreach($transactions as $t)
{
$month = substr($t['name'], 0, 7);
if(!isset($summary[$month]))
$summary[$month] = 0;
if(isset($t['values']))
$summary[$month] += count($t['values']);
}
将导致:
Array
(
[2009-10] => 2
[2009-11] => 4
[2009-12] => 1
)
将导致:
Array
(
[2009-10] => 2
[2009-11] => 4
[2009-12] => 1
)
这是将数据数组放入所需摘要的典型情况
$data = array(
array('name' => '2009-10-23', 'values' => array('INzY2MTI4ZWM4OGRm')),
array('name' => '2009-10-26', 'values' => array('IYmIzOWNmMmU3OWQz')),
array('name' => '2009-11-23', 'values' => array('INTg4YzgxYWU1ODkx', 'IMjhkNDZkY2FjNDhl')),
array('name' => '2009-11-24', 'values' => array('INTg4YzgxYWU1ODkx', 'INTg4YzgxYWU1ODkx')),
array('name' => '2009-12-01', 'values' => array('IMWFiODk5ZjU1OTFk'))
);
function count_by_month($reduced, $current) {
$month = date('F Y', strtotime($current['name']));
if ( ! isset($reduced[$month])) {
$reduced[$month] = 0;
}
$reduced[$month] += count($current['values']);
return $reduced;
}
// Take the data array and return an array of
// month (key) and transaction count for that month (value)
$counts = array_reduce($data, 'count_by_month');
print_r($counts);
这是将数据数组放入所需摘要的典型情况
$data = array(
array('name' => '2009-10-23', 'values' => array('INzY2MTI4ZWM4OGRm')),
array('name' => '2009-10-26', 'values' => array('IYmIzOWNmMmU3OWQz')),
array('name' => '2009-11-23', 'values' => array('INTg4YzgxYWU1ODkx', 'IMjhkNDZkY2FjNDhl')),
array('name' => '2009-11-24', 'values' => array('INTg4YzgxYWU1ODkx', 'INTg4YzgxYWU1ODkx')),
array('name' => '2009-12-01', 'values' => array('IMWFiODk5ZjU1OTFk'))
);
function count_by_month($reduced, $current) {
$month = date('F Y', strtotime($current['name']));
if ( ! isset($reduced[$month])) {
$reduced[$month] = 0;
}
$reduced[$month] += count($current['values']);
return $reduced;
}
// Take the data array and return an array of
// month (key) and transaction count for that month (value)
$counts = array_reduce($data, 'count_by_month');
print_r($counts);