加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 云专线、建站、虚拟专用网络、智能边缘云、设备管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

融合两种PHP中进行2D数组组合的方法

发布时间:2023-10-27 11:01:53 所属栏目:PHP教程 来源:互联网
导读:   例一



  自定义方法合并数组



  先看一个二维数组:



   代码如下



  1



  Array (



  2 [0] => Array (



  3
  例一
 
  自定义方法合并数组
 
  先看一个二维数组:
 
   代码如下
 
  1
 
  Array (
 
  2           [0] => Array (
 
  3                               [A] => store_name
 
  4                               [B] => 商店一
 
  5                              )
 
  6           [1] => Array (
 
  7                               [A] => store_owner
 
  8                               [B] => 小风
 
  9                               )
 
  10           [2] => Array (
 
  11                               [A] => store_name
 
  12                               [B] => 商店二
 
  13                               )
 
  14           [3] => Array (
 
  15                                [A] => store_owner
 
  16                                [B] => 小磊
 
  17                                )
 
  18 ?>
 
  19 大家会发现里面有两个 store_name 和 store_owner ,所以我想让他们合并成下面这样
 
  20
 
  21 Array (
 
  22      [0] => Array
 
  23          (
 
  24            [A] => 商店一
 
  25            [B] => 小风
 
  26           )
 
  27       [1] => Array
 
  28          (
 
  29            [A] => 商店二
 
  30            [B] => 小磊
 
  31           )
 
  32 ?>
 
  合并方法如下:
 
   代码如下
 
  1
 
  $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 取得是 键值为 偶数的值
 
          }
 
  2 ?>
 
  这样就可以得到上面的结果了!
 
  为了让大家看的更清楚写 我把数据库表结构写出来 主要字段如下:
 
  key value
 
  store_name 网店一
 
  store_owner 小风
 
  store_name 网店二
 
  store_owner 小磊
 
  
 
  通过上面 的方法做过后 前台页面就可以以一排的方式显示了,如下
 
  name owner
 
  网店一 小风
 
  网店二 小磊
 
  例3
 
   代码如下
 
  1
 
  $arr = array
 
  (
 
      0 => array(
 
      '1@01,02',
 
      '2@01,02',
 
      '4@ALL',
 
      '3@01',
 
      '5@01,02,04',
 
      ),
 
  2     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,',
 
    * )
 
   */
 
  ?>
 

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章