首页  >  文章  >  后端开发  >  两个数组合并问题

两个数组合并问题

WBOY
WBOY原创
2016-06-23 13:46:53781浏览

数组1:

$arr1=Array		(			[0] => Array				(					[time] => 8:00					[detail] => Array						(							[0] => Array								(									[caseid] => 31									[casename] => 张三									 								)							[1] => Array								(									[caseid] => 32									[casename] =>李四									 								)							[2] => Array								(									[caseid] => 33									[casename] => 王五									 								)		 						)		 				)		 			[1] => Array				(					[time] => 12:00					[detail] => Array						(							[0] => Array								(									[caseid] => 32									[casename] => 李四 								)							[1] => Array								(									[caseid] => 33									[casename] => 王五 								)		 						)		 				)		 			[2] => Array				(					[time] => 18:00					[detail] => Array						(							[0] => Array								(									[caseid] => 31									[casename] => 张三									 								)							[1] => Array								(									[caseid] => 32									[casename] => 李四									 								)							[2] => Array								(									[caseid] => 33									[casename] => 王五									 								)		 						)		 				)		 		)

数组2
$arr2=Array		(			[0] => Array				(					[time] => 8:00					[detail2] => Array						(							[0] => Array								(									[caseid] => 41									[casename] => 刘备									 								)													)		 				)		 			[1] => Array				(					[time] => 16:00					[detail2] => Array						(							[0] => Array								(									[caseid] => 42									[casename] => 张飞 								)							[1] => Array								(									[caseid] => 43									[casename] => 赵云 								)		 						)		 				)		 			[2] => Array				(					[time] => 18:00					[detail2] => Array						(							[0] => Array								(									[caseid] => 43									[casename] => 赵云									 								)		 						)		 				)			[2] => Array				(					[time] => 22:00					[detail2] => Array						(							[0] => Array								(									[caseid] => 45									[casename] => 貂蝉									 								)		 						)		 				)		 		)合并后,最终数组应该是这样显示:[code=php]$result=Array		(			[0] => Array				(					[time] => 8:00					[detail] => Array						(							[0] => Array								(									[caseid] => 31									[casename] => 张三									 								)							[1] => Array								(									[caseid] => 32									[casename] =>李四									 								)							[2] => Array								(									[caseid] => 33									[casename] => 王五									 								)		 						)						[detail2] => Array						(							[0] => Array								(									[caseid] => 41									[casename] => 刘备									 								)													)		 				)		 			[1] => Array				(					[time] => 12:00					[detail] => Array						(							[0] => Array								(									[caseid] => 32									[casename] => 李四 								)							[1] => Array								(									[caseid] => 33									[casename] => 王五 								)		 						)					[detail2] => Array						(						)		 				)			[2] => Array				(					[time] => 16:00					[detail] => Array						(						)					[detail2] => Array						(							[0] => Array								(									[caseid] => 42									[casename] => 张飞 								)							[1] => Array								(									[caseid] => 43									[casename] => 赵云 								)		 						)		 				)		 			[3] => Array				(					[time] => 18:00					[detail] => Array						(							[0] => Array								(									[caseid] => 31									[casename] => 张三									 								)							[1] => Array								(									[caseid] => 32									[casename] => 李四									 								)							[2] => Array								(									[caseid] => 33									[casename] => 王五									 								)		 						)					[detail2] => Array						(							[0] => Array								(									[caseid] => 43									[casename] => 赵云									 								)		 						)		 				)			[4] => Array				(					[time] => 22:00					[detail] => Array						(						)					[detail2] => Array						(							[0] => Array								(									[caseid] => 45									[casename] => 貂蝉									 								)		 						)		 				)		 		)

[/code]


回复讨论(解决方案)

$arr1 = array (  0 =>   array (    'time' => '8:00',    'detail' =>     array (      0 =>       array (        'caseid' => '31',        'casename' => '张三',      ),      1 =>       array (        'caseid' => '32',        'casename' => '李四',      ),      2 =>       array (        'caseid' => '33',        'casename' => '王五',      ),    ),  ),  1 =>   array (    'time' => '12:00',    'detail' =>     array (      0 =>       array (        'caseid' => '32',        'casename' => '李四',      ),      1 =>       array (        'caseid' => '33',        'casename' => '王五',      ),    ),  ),  2 =>   array (    'time' => '18:00',    'detail' =>     array (      0 =>       array (        'caseid' => '31',        'casename' => '张三',      ),      1 =>       array (        'caseid' => '32',        'casename' => '李四',      ),      2 =>       array (        'caseid' => '33',        'casename' => '王五',      ),    ),  ),);$arr2 = array (  0 =>   array (    'time' => '8:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '41',        'casename' => '刘备',      ),    ),  ),  1 =>   array (    'time' => '16:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '42',        'casename' => '张飞',      ),      1 =>       array (        'caseid' => '43',        'casename' => '赵云',      ),    ),  ),  2 =>   array (    'time' => '22:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '45',        'casename' => '貂蝉',      ),    ),  ),);foreach($arr1 as $item) $a[$item['time']] = $item;foreach($arr2 as $item) $b[$item['time']] = $item;print_r(array_values(array_merge_recursive($a, $b)));
Array(    [0] => Array        (            [time] => Array                (                    [0] => 8:00                    [1] => 8:00                )            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                        )                    [1] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [2] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 41                            [casename] => 刘备                        )                )        )    [1] => Array        (            [time] => 12:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [1] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )        )    [2] => Array        (            [time] => 18:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                        )                    [1] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [2] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )        )    [3] => Array        (            [time] => 16:00            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 42                            [casename] => 张飞                        )                    [1] => Array                        (                            [caseid] => 43                            [casename] => 赵云                        )                )        )    [4] => Array        (            [time] => 22:00            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 45                            [casename] => 貂蝉                        )                )        ))

php 提供了丰富的函数
你应该自己动动手

数组2有问题,18:00,与 22:00的下标都是2,把22:00改为3

<?phpecho '<meta http-equiv="content-type" content="text/html;charset=utf-8">';$arr1 = array (  0 =>   array (    'time' => '8:00',    'detail' =>     array (      0 =>       array (        'caseid' => '31',        'casename' => '张三',      ),      1 =>       array (        'caseid' => '32',        'casename' => '李四',      ),      2 =>       array (        'caseid' => '33',        'casename' => '王五',      ),    ),  ),  1 =>   array (    'time' => '12:00',    'detail' =>     array (      0 =>       array (        'caseid' => '32',        'casename' => '李四',      ),      1 =>       array (        'caseid' => '33',        'casename' => '王五',      ),    ),  ),  2 =>   array (    'time' => '18:00',    'detail' =>     array (      0 =>       array (        'caseid' => '31',        'casename' => '张三',      ),      1 =>       array (        'caseid' => '32',        'casename' => '李四',      ),      2 =>       array (        'caseid' => '33',        'casename' => '王五',      ),    ),  ),);$arr2 = array (  0 =>   array (    'time' => '8:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '41',        'casename' => '刘备',      ),    ),  ),  1 =>   array (    'time' => '16:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '42',        'casename' => '张飞',      ),      1 =>       array (        'caseid' => '43',        'casename' => '赵云',      ),    ),  ),    2 =>     array (    'time' => '18:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '43',        'casename' => '赵云',      ),    ),    ),  3 =>   array (    'time' => '22:00',    'detail2' =>     array (      0 =>       array (        'caseid' => '45',        'casename' => '貂蝉',      ),    ),  ),);$result = array();foreach($arr1 as $row){    $key = $row['time'];    $row['detail2'] = array();    $result[$key] = $row;}foreach($arr2 as $row){    $key = $row['time'];    if(!isset($result[$key])){        $result[$key] = array(            'time' => $row['time'],            'detail' => array(),            'detail2' => $row['detail2']        );    }else{       $result[$key]['detail2'] = $row['detail2'];    }}ksort($result, SORT_NUMERIC);$result = array_values($result);echo '<pre class="brush:php;toolbar:false">';print_r($result);echo '
';?>

Array(    [0] => Array        (            [time] => 8:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                        )                    [1] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [2] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 41                            [casename] => 刘备                        )                )        )    [1] => Array        (            [time] => 12:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [1] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )            [detail2] => Array                (                )        )    [2] => Array        (            [time] => 16:00            [detail] => Array                (                )            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 42                            [casename] => 张飞                        )                    [1] => Array                        (                            [caseid] => 43                            [casename] => 赵云                        )                )        )    [3] => Array        (            [time] => 18:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                        )                    [1] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [2] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 43                            [casename] => 赵云                        )                )        )    [4] => Array        (            [time] => 22:00            [detail] => Array                (                )            [detail2] => Array                (                    [0] => Array                        (                            [caseid] => 45                            [casename] => 貂蝉                        )                )        ))

非常感谢,自己搞定了。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn