Php 在数组的数组中有条件地计算值
我有这样一个数组:Php 在数组的数组中有条件地计算值,php,arrays,Php,Arrays,我有这样一个数组: array('0'=> array( 'fromDate' =>2007, 'toDate' => 2008, 'value' => 7) '1'=> array( 'fromDate' =>2010, 'toDate' => , 'va
array('0'=>
array(
'fromDate' =>2007,
'toDate' => 2008,
'value' => 7)
'1'=>
array(
'fromDate' =>2010,
'toDate' => ,
'value' => 3)
'2'=>
array(
'fromDate' => 2007,
'toDate' => ,
'value' => 4))
array('0' =>
array(
'fromDate' => 2007,
'sum' => 2)
'1' =>
array(
'fromDate' => 2010,
'sum' => 1))
我想计算“值”,将它们按“fromDate”分组相加,如下所示:
array('0'=>
array(
'fromDate' =>2007,
'toDate' => 2008,
'value' => 7)
'1'=>
array(
'fromDate' =>2010,
'toDate' => ,
'value' => 3)
'2'=>
array(
'fromDate' => 2007,
'toDate' => ,
'value' => 4))
array('0' =>
array(
'fromDate' => 2007,
'sum' => 2)
'1' =>
array(
'fromDate' => 2010,
'sum' => 1))
非常感谢您的帮助 如果您想计算有多少个带有“fromDate”的数组,例如2007,则:
$myData = array('0'=>
array(
'fromDate' =>2007,
'toDate' => 2008,
'value' => 7),
'1'=>
array(
'fromDate' =>2010,
'toDate' => NULL,
'value' => 3),
'2'=>
array(
'fromDate' => 2007,
'toDate' => NULL,
'value' => 4)
);
$counts = array_reduce(
$myData,
function ($counter, $entry) {
if (!isset($counter[$entry['fromDate']])) {
$counter[$entry['fromDate']] = array(
'fromDate' => $entry['fromDate'],
'sum' => 1
);
} else {
$counter[$entry['fromDate']]['sum']++;
}
return $counter;
},
array()
);
var_dump($counts);
function countByFromDate($array) {
$result = array();
foreach($array as $item) {
$fromDate = $item['fromDate'];
if (!isset($result[$fromDate])) {
$result[$fromDate] = array('fromDate' => $fromDate, 'sum' => 0);
}
$result[$fromDate]['sum']++;
}
return $result;
}
如果您想计算有多少个带有“fromDate”(例如2007)的数组,请执行以下操作:
function countByFromDate($array) {
$result = array();
foreach($array as $item) {
$fromDate = $item['fromDate'];
if (!isset($result[$fromDate])) {
$result[$fromDate] = array('fromDate' => $fromDate, 'sum' => 0);
}
$result[$fromDate]['sum']++;
}
return $result;
}
你能更具体一点你的要求是什么吗?你能更具体一点你的要求是什么吗?+1。不喜欢数组_reduce(),但这个答案很好地利用了它:)谢谢@Mark Baker!现在我需要理解为什么它会像一个符咒一样工作:)关于在哪里最好地学习关于数组的一切的任何技巧吗?最好的开始(一如既往)是数组函数的php文档();以及闭包()的相关页面,用于在回调+1中使用闭包。不喜欢数组_reduce(),但这个答案很好地利用了它:)谢谢@Mark Baker!现在我需要理解为什么它会像一个符咒一样工作:)关于在哪里最好地学习关于数组的一切的任何技巧吗?最好的开始(一如既往)是数组函数的php文档();以及闭包()的相关页面,用于在回调中使用闭包