永发信息网

php如何操作数组遍历追加数据

答案:2  悬赏:70  手机版
解决时间 2021-03-16 23:23
规则:用数组1中的id匹配数组2中的uid
如果数组2中的uid和数组1中的uid相同的话
那就让数组2中的信息显示在数组1中uid相同的下面(独立的一个数组内)
数组1每个子数组下面都要显示3条数组2的信息
uid和uid相同的优先显示
uid和uid相同大于3条的话就只显示3条
小于3条时用其余的从小到达显示补全
求大神们解答

数组1
$arr1 = array(
array('uid'=>1,'times'=>'2014-02-25','counts'=>'19'),
array('uid'=>2,'times'=>'2014-02-26','counts'=>'17'),
array('uid'=>3,'times'=>'2014-02-27','counts'=>'6')
);

数组2
$arr2 = array(
array('id'=>1,'uid'=>1,'times'=>'2014-02-25','counts'=>'19'),
array('id'=>2,'uid'=>1,'times'=>'2014-02-26','counts'=>'17'),
array('id'=>3,'uid'=>1,'times'=>'2014-02-27','counts'=>'16'),
array('id'=>4,'uid'=>3,'times'=>'2014-02-28','counts'=>'18'),
array('id'=>5,'uid'=>1,'times'=>'2014-02-28','counts'=>'15'),
array('id'=>6,'uid'=>4,'times'=>'2014-02-28','counts'=>'14'),
array('id'=>7,('uid'=>4,'times'=>'2014-02-28','counts'=>'13'),
array('id'=>8,'uid'=>1,'times'=>'2014-02-28','counts'=>'12'),
array('id'=>9,'uid'=>1,'times'=>'2014-02-28','counts'=>'11'),
array('id'=>10,'uid'=>3,'times'=>'2014-02-28','counts'=>'10')
);

最后生成一个这样的数组
Array
(
[0] => Array
(
[arr1] => Array
(
array('id'=>1,'times'=>'2014-02-25','counts'=>'19'),
)

[arr2] => Array
(
array('id'=>1,'uid'=>1,'times'=>'2014-02-25','counts'=>'19'),
array('id'=>2,'uid'=>1,'times'=>'2014-02-26','counts'=>'17'),
array('id'=>3,'uid'=>1,'times'=>'2014-02-27','counts'=>'16'),
)

)
[1] => Array
(
[arr1] => Array
(
array('id'=>2,'times'=>'2014-02-26','counts'=>'17'),
)

[arr2] => Array
(
array('id'=>5,'uid'=>1,'times'=>'2014-02-28','counts'=>'15'),
array('id'=>8,'uid'=>1,'times'=>'2014-02-28','counts'=>'12'),
array('id'=>9,'uid'=>1,'times'=>'2014-02-28','counts'=>'11'),

)

)
[2] => Array
(
[arr1] => Array
(
array('id'=>3,'times'=>'2014-02-27','counts'=>'6')
)

[arr2] => Array
(
array('id'=>4,'uid'=>3,'times'=>'2014-02-28','counts'=>'18'),
array('id'=>10,'uid'=>3,'times'=>'2014-02-28','counts'=>'10'),
array('id'=>6,'uid'=>4,'times'=>'2014-02-28','counts'=>'14'),

)

)
)
最佳答案
可以遍历两次$a, 第一次取出所有的父级栏目,放入$newarr中,第二次将子栏目放入对应
的父级栏目数组中, 最后使用$newarr就行
不过这是建立在只有二级栏目的基础上,如果有三级栏目的话就还要麻烦些了

$newarr = array();
foreach ($a as $key => $value)
{
if($value['fID'] == 0)
{
$cid = $value['cID'];
$newarr[$cid] = $value;
unset($a[$key]);
}
}

foreach ($a as $key => $value)
{
if($value['fID'] != 0)
{
$fid = $value['fID'];
$newarr[$fid]['zilanmu'][] = $value;
}
}
全部回答
假如你的数组叫做$arr,下面的代码数出你需要的:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
汽车轮胎侧面被马路牙子擦破了皮,有什么影响
急需寻求内江威远的一名经验丰富的老中医
古装剧,女主角头戴黑纱帽
甄家村村这个地址在什么地方,我要处理点事
刚买的隐形眼镜,戴了没几天放那了,今天又带
100万美元怎样能最快换成人民币,求专业人士
(A’BC)’+(AB’)’
袁大头酱肉火烧地址在什么地方,想过去办事
为什么叶子的颜色一面深一面浅?
吉林教育印刷厂怎么去啊,有知道地址的么
在这副图里最多能找到多少张脸?答对50分!
眼线笔长时间不用,会干吗
在小公司做会计,没有签订合同,想辞职但老板
急~想找昆明代理办信用卡的公司和个人,办一
往事不堪回首的下一句是什么?
推荐资讯
请问小观赏鱼几天喂一次啊
请大家帮我的手作护肤品起个名字 这是一个系
电机线圈重绕材料有哪些?
灵壁二手房费用标准
有一首歌英文歌 一开始有个女的唱 歌词 来哒
杨玉环曾在太真宫修道?
3百米一寸喷灌带要用多大流量的水泵
重庆从菜园坝到重庆北站(龙头寺)怎么走
经常肿痄腮怎么办
三星XQB60–K75S洗衣机进水阀没电压电脑版不
75乘以99 +2乘以75等于多少(简便写完发图)
什么软件可以发广告,而且很多人看。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?