Php 递归动态数组
我有一个php数组场景:Php 递归动态数组,php,arrays,dynamic,Php,Arrays,Dynamic,我有一个php数组场景: array(2) { [43]=> array(2) { ["2011-07-01"]=> int(20) ["2011-07-02"]=> int(16) } [77]=> array(2) { ["2011-07-01"]=> int(10) ["2011-07-02"]=> int(10) } } 而数组($person=>array(da
array(2) {
[43]=>
array(2) {
["2011-07-01"]=>
int(20)
["2011-07-02"]=>
int(16)
}
[77]=>
array(2) {
["2011-07-01"]=>
int(10)
["2011-07-02"]=>
int(10)
}
}
而数组($person=>array(date=>hour))。
我需要将8小时分配到以后的每一天中,因此输出为:
array(2) {
["anna"]=>
array(5) {
["2011-07-01"]=>
int(8)
["2011-07-02"]=>
int(8)
["2011-07-03"]=>
int(8)
["2011-07-04"]=>
int(8)
["2011-07-05"]=>
int(4)
}
["joan"]=>
array(3) {
["2011-07-01"]=>
int(8)
["2011-07-02"]=>
int(8)
["2011-07-03"]=>
int(4)
}
}
有什么办法吗?这里只是一个片段,生产数组非常大,平均50个人密钥和几十个日期密钥,我们在这里得到的主要功能花了2-3分钟完成
顺便说一句,在这里发布我已经用尽了搜索和编码
谢谢你
作者的评论如下: 我尝试过在数组中循环并填充一个新的数组,尝试(重新)将相同的数组填充到foreach循环中(但在循环中添加一项会导致指针被扩展),尝试过使用迭代器来操作数组实际的主函数是:
function Distribute($u,$h,$d,$m,$y,$arr,$u_h=8)
{
$remain = ($h % $u_h);$h = $h-$remain; $total_days = ($h/$u_h);
if ($total_days > 0)
for ($i=0; $i<$total_days ; $i++)
$arr[date('m-Y',mktime(0,0,0,$m,$d+$i,$y))][$u] += $u_h;
if ($remain > 0)
$arr[date('m-Y',mktime(0,0,0,$m,$d+$i,$y))][$u] += $remain;
return $arr;
}
函数分布($u、$h、$d、$m、$y、$arr、$u\u h=8)
{
$remain=($h%$u_h);$h=$h-$remain;$total_days=($h/$u_h);
如果($total_days>0)
对于($i=0;$i 0)
$arr[date('m-Y',mktime(0,0,0,$m,$d+$i,$Y))][$u]+=$remain;
返回$arr;
}
它有效,但速度相当慢。6个问题,0个被接受。不好是的,我有办法做到这一点。好的答案当然是“有奖的”,但一定是好的答案。6个循环中只有2个是好的答案,它们现在被正确地接受了,我的错。@Talisin,我已经尝试通过数组循环并填充一个新的,尝试(重新)将相同的数组填充到foreach循环中(但是在循环中添加一个项会导致指针被扩展),尝试使用迭代器来操作数组实际的主函数是
Distribute($u,$h,$d,$m,$y,$arr,$u h=8){$resident=($h%$u_h);$h=$h-$resident;$total_udays=($h/$u_h);if($total_udays>0)for($i=0;$i0)$arr[date($m-y',mktime(0,0,0,0,0,$m,$d+$i,$y))][$resident;$resident;$resident;return$arr;
它工作得很慢。@mellamokb?