php for 循环思路问题

图片说明

你这样做的思路非常不好做,麻烦,做出来效率也非常低,你2个表结构基本一样的
为什么不合并成一个表,然后增加一个字段区分是支出的还是收入的

SQL 指令

 select a.时间, a.收入, 0 as 支出, a.余额 from a
union all
select b.时间, 0 as 收入, b.支出, b.余额 from b
order by 1
 select a.*,0 as 状态 from a union all select b.*,1 as 状态 from b order by 时间

这个就可以了,用0代表收入,1代表支出

 select a.*,0 as 状态 from a union all select b.*,1 as 状态 from b order by 时间

上面SQL语句
结果如图:
图片说明

你可以把其中一个表遍历一下,索引改为月份,比如第二个表 ,然后遍历第一个表,用foreach遍历,
遍历之前根据当前的月份判断第二个数组中是否有值,没值的话,就直接把结果放到数组中,有值得话,你先放第二个

foreach($array2 as $k=>$v){
$data[v['month'] = $v;
}
foreach($array1 as $k1=>$v1){
$result[] = v1;
if(!empty($data[$v1['month'])){
$result[] = $data[$v1['month'];
}
}

return $result;

先union all 合拼,然后再查询。