好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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,',     * )    */   ?> 

查看更多关于php二维数组的合并2种方法 - php数组的详细内容...

  阅读:64次