加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-11-10 16:33:50 所属栏目:PHP教程 来源:
导读:例1

自定义方法合并数组

先看一个二维数组:

代码如下

1

Array (

2 [0] => Array (

3 [A] => store_name

4
例1
 
自定义方法合并数组
 
先看一个二维数组:
 
 代码如下
 
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,',
 
  * )
 
 */
 
?>
 
 

(编辑:聊城站长网)

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

    推荐文章