<? Php $ Arr = array ( 0 => array ( '1 @ 01,02 ', '2 @ 01,02 ', '4 @ all ', '3 @ 01 ', '5 @ 01,02, 04 ', ), 1 => array ( '1 @ 01,02, 03 ', '2 @ 01,02, 04 ', '3 @ all ', '4 @ 01,02 ', '2017 @ 111 ', '5 @ 03 ', ), 2 => array ( '1 @ 01,02, 03 ', '2 @, 05 ', '3 @ all ', '4 @ 01,02, 03 ', '2017 @ 111 ', '5 @ 03 ', ), ); $ Result = array (); Foreach ($ arr as $ items ){ If (is_array ($ items )){ Foreach ($ items as $ item ){ $ Item = explode ('@', $ item ); If (count ($ item )! = 2 ){ Continue; } $ Result [$ item [0]. = $ item [1]. ','; } } } Function reJoin (& $ item, $ key, $ seq ){ $ List = array_unique (explode ($ seq, $ item )); If (in_array ('all', $ list )){ $ Item = $ key. '@ all '; } Else { $ Item = $ key. '@'. join ($ seq, $ list ); } } Array_walk ($ result, 'rejoin ',','); Sort ($ result ); Var_export ($ result ); /** * Array ( * 0 => '2017 @ 111 ,', * 1 => '1 @ 01,02, 03 ,', * 2 => '2 @ 01,02, 04,03, 05 ,', * 3 => '3 @ all ', * 4 => '4 @ all ', * 5 => '5 @ 01,02, 04,03 ,', *) */ ?> |