我需要创建一个PHP函数,它将循环遍历一个多维数组,并返回一个表示某个键的和的值,其中另一个键的值是传递给函数的日期值<=。以下是数据数组的示例数组:
Array
(
[Nov 18, 2011] => Array
(
[C] => 100
[I] => 100
[M] => 100
)
[Nov 22, 2011] => Array
(
[C] => 200
[I] => 200
)
[Nov 29, 2011] => Array
(
[C] => 300
[I] => -300
)
)C、I和M这三个类别的数量永远不会超过这三个类别,每个日期的值应该被认为是一个连续的总和。
那么,我如何计算截至2011年11月22日的C类别的价值?正确的值当然是300。(11月18日为100 +11月22日为200 )
如果我需要计算2011年11月29日的i值,该怎么办?本例中的正确答案应该是0。(为100 + 200 - 300)
我对如何最好地实现这一点持开放态度。我的直觉是使用某种函数,然后传入类别和日期值。谢谢。
发布于 2011-12-08 11:35:28
这取决于你可能想要这样做的次数,以及你是否需要为每个类别这样做,等等,无论你是使用函数还是只使用一个简单的循环。
无论采用哪种方式,您都可以将以下代码放入一个函数中,只需传入$target_date和类别(替换本例中使用的硬编码的"C“):
$c_total = 0;
foreach($main_array as $date => $sub_array)
{
if($date <= $target_date)
{
$c_total += $sub_array["C"];
}
}编辑:为了清晰起见,下面的函数使用strtotime()将日期值转换为时间戳以便于比较:
function getCategoryTotal($target_date, $category)
{
$c_total = 0;
$target_date = strtotime($target_date);
foreach($main_array as $date => $sub_array)
{
if(strtotime($date) <= $target_date)
{
$c_total += $sub_array[$category];
}
}
return $c_total;
}https://stackoverflow.com/questions/8425771
复制相似问题