数组1:
$arr1=array( array( 'id'=>1, 'name'=>'国际新闻' ), array( 'id'=>2, 'name'=>'国内新闻' ) );
数组2:
$arr2=array( array( 'id'=>1, 'name'=>'国际娱乐新闻', 'tid'=>1 ), array( 'id'=>2, 'name'=>'国际体育新闻', 'tid'=>1 ), array( 'id'=>3, 'name'=>'国际时政新闻', 'tid'=>1 ), array( 'id'=>4, 'name'=>'国内娱乐新闻', 'tid'=>2 ), array( 'id'=>5, 'name'=>'国内体育新闻', 'tid'=>2 ) );
数组3:
$arr3=array( array( 'id'=>1, 'title'=>'超甜!英国小哥霉霉演唱会上向女友求婚', 'ptime'=>'1530235016', 'cid'=>1 ), array( 'id'=>2, 'title'=>'英格兰丢单刀获第2 比利时全胜将战日本', 'ptime'=>'1530235177', 'cid'=>2 ), array( 'id'=>3, 'title'=>'环球时报社评:美要世界不买伊朗石油 中国怎么办', 'ptime'=>'1530235270', 'cid'=>3 ), array( 'id'=>4, 'title'=>'陈奕迅赴俄罗斯观看世界杯', 'ptime'=>'1530235474', 'cid'=>4 ), array( 'id'=>5, 'title'=>'姚明在场下目睹这一幕:中国内线竟被韩国打爆', 'ptime'=>'1530235548', 'cid'=>5 ), array( 'id'=>6, 'title'=>'2018年世界杯,荷兰、意大利未进入32强', 'ptime'=>'1530261159', 'cid'=>2 ), array( 'id'=>7, 'title'=>'倪妮baby牵手荡秋千画面文艺唯美 两人灿笑开心的像个孩子', 'ptime'=>'1530414358', 'cid'=>4 ) );
合并方法:
foreach ($arr1 as &$val01) { //在遍历数组1的同时添加'cates'=>array()元素 foreach ($arr2 as $val02) { if($val01['id']==$val02['tid']){ $val01['cates'][]=$val02; } } //在已按类整合进数组1的'cates'元素下的数组2中添加'arts'=>array()元素 foreach ($val01['cates'] as &$val03) { foreach ($arr3 as $val04) { if($val03['id']==$val04['cid']){ $val03['arts'][]=$val04; } } } } echo "<pre>"; var_dump($arr1); echo "</pre>";
显示结果为:
array(2) { [0]=> array(3) { ["id"]=> int(1) ["name"]=> string(12) "国际新闻" ["cates"]=> array(3) { [0]=> array(4) { ["id"]=> int(1) ["name"]=> string(18) "国际娱乐新闻" ["tid"]=> int(1) ["arts"]=> array(1) { [0]=> array(4) { ["id"]=> int(1) ["title"]=> string(54) "超甜!英国小哥霉霉演唱会上向女友求婚" ["ptime"]=> string(10) "1530235016" ["cid"]=> int(1) } } } [1]=> array(4) { ["id"]=> int(2) ["name"]=> string(18) "国际体育新闻" ["tid"]=> int(1) ["arts"]=> array(2) { [0]=> array(4) { ["id"]=> int(2) ["title"]=> string(53) "英格兰丢单刀获第2 比利时全胜将战日本" ["ptime"]=> string(10) "1530235177" ["cid"]=> int(2) } [1]=> array(4) { ["id"]=> int(6) ["title"]=> string(51) "2018年世界杯,荷兰、意大利未进入32强" ["ptime"]=> string(10) "1530261159" ["cid"]=> int(2) } } } [2]=> array(4) { ["id"]=> int(3) ["name"]=> string(18) "国际时政新闻" ["tid"]=> int(1) ["arts"]=> array(1) { [0]=> array(4) { ["id"]=> int(3) ["title"]=> string(65) "环球时报社评:美要世界不买伊朗石油 中国怎么办" ["ptime"]=> string(10) "1530235270" ["cid"]=> int(3) } } } } } [1]=> &array(3) { ["id"]=> int(2) ["name"]=> string(12) "国内新闻" ["cates"]=> array(2) { [0]=> array(4) { ["id"]=> int(4) ["name"]=> string(18) "国内娱乐新闻" ["tid"]=> int(2) ["arts"]=> array(2) { [0]=> array(4) { ["id"]=> int(4) ["title"]=> string(36) "陈奕迅赴俄罗斯观看世界杯" ["ptime"]=> string(10) "1530235474" ["cid"]=> int(4) } [1]=> array(4) { ["id"]=> int(7) ["title"]=> string(77) "倪妮baby牵手荡秋千画面文艺唯美 两人灿笑开心的像个孩子" ["ptime"]=> string(10) "1530414358" ["cid"]=> int(4) } } } [1]=> &array(4) { ["id"]=> int(5) ["name"]=> string(18) "国内体育新闻" ["tid"]=> int(2) ["arts"]=> array(1) { [0]=> array(4) { ["id"]=> int(5) ["title"]=> string(63) "姚明在场下目睹这一幕:中国内线竟被韩国打爆" ["ptime"]=> string(10) "1530235548" ["cid"]=> int(5) } } } } } }