帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

php二维数组的合并2种方法 - php数组

php二维数组的合并2种方法

昨天还写了一篇关于数组合并的技术文章,那里我介绍的是一维数组合并,这里介绍一下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 );   //统计显示的次数,这里的$showinfo是我获取数据库内容时的一个变量,然后打印出来就是上面刚开始的样子  
         for ( $i =0; $i < $store_count ; $i ++) 
        { 
             $j = $i +1;      //将 $i 加 1 跳过 一级  相当于 $j 取得是 键值为 奇数的值  
             $stores []= array ( 
                           'name'  => $showinfo [ $i ][ 'value' ], 
                           'owner' => $showinfo [ $j ][ 'value' ], 
                          ); 
             $i  =  $j ;   //  这里的作用是 相当于 $i 取得是 键值为 偶数的值  
        } 
?> 

这样就可以得到上面的结果了,为了让大家看的更清楚些,我把数据库表结构写出来,主要字段如下:

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 ); 
/**  
 * array (  
  * 0 => '111@01,05,',  
  * 1 => '1@01,02,03,',  
  * 2 => '2@01,02,04,03,05,',  
  * 3 => '3@ALL',  
  * 4 => '4@ALL',  
  * 5 => '5@01,02,04,03,',  
  * )  
 */  
?> 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php二维数组的合并2种方法 - php数组》
文章链接:https://www.admin99.cn/4549
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册