| 
       昨天还写了一篇关于数组合并的技术文章,那里我介绍的是一维数组合并,这里介绍一下php二维数组的合并方法,希望对各位同学会有所帮助哦。 
例1:自定义方法合并数组,先看一个二维数组,代码如下: 
	
	- <?php 
 
	- Array ( 
 
	-           [0] => Array ( 
 
	-                               [A] => store_name 
 
	-                               [B] => 商店一 
 
	-                              ) 
 
	-           [1] => Array ( 
 
	-                               [A] => store_owner 
 
	-                               [B] => 小风 
 
	-                               ) 
 
	-           [2] => Array ( 
 
	-                               [A] => store_name 
 
	-                               [B] => 商店二 
 
	-                               ) 
 
	-           [3] => Array ( 
 
	-                                [A] => store_owner 
 
	-                                [B] => 小磊 
 
	-                                ) 
 
	- ?> 
 
	 
 
大家会发现里面有两个 store_name 和 store_owner,所以我想让他们合并成下面这样 
	
	- <?php  
 
	- Array ( 
 
	-      [0] => Array 
 
	-          ( 
 
	-            [A] => 商店一 
 
	-            [B] => 小风 
 
	-           ) 
 
	-       [1] => Array 
 
	-          ( 
 
	-            [A] => 商店二 
 
	-            [B] => 小磊 
 
	-           ) 
 
	- ?> 
 
	 
 
合并方法如下,代码如下: 
	
	- <?php 
 
	- $stores = array();  
 
	-         $store_count=count($showinfo);   
 
	-         for($i=0;$i<$store_count;$i++) 
 
	-         { 
 
	-             $j=$i+1;      
 
	-             $stores[]=array( 
 
	-                           'name' =>$showinfo[$i]['value'], 
 
	-                           'owner'=>$showinfo[$j]['value'], 
 
	-                           ); 
 
	-             $i = $j;   
 
	-         } 
 
	- ?> 
 
	 
 
这样就可以得到上面的结果了,为了让大家看的更清楚些,我把数据库表结构写出来,主要字段如下: 
	
	- key value 
 
	- store_name 网店一 
 
	- store_owner 小风 
 
	- store_name 网店二 
 
	- store_owner 小磊 
 
	 
 
通过上面的方法做过后,前台页面就可以以一排的方式显示了,如下 
	
	- name owner 
 
	- 网店一 小风 
 
	- 网店二 小磊 
 
	 
 
例2,代码如下: 
	
	- <?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', 
 
	-     '111@01,05', 
 
	-     '5@03', 
 
	-     ), 
 
	-     2 => array( 
 
	-     '1@01,02,03', 
 
	-     '2@02,03,05', 
 
	-     '3@ALL', 
 
	-     '4@01,02,03', 
 
	-     '111@01,05', 
 
	-     '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); 
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	- ?> 
 
	 
 
      
      (责任编辑:admin) |