Heim > Backend-Entwicklung > PHP-Tutorial > php二维数组的合并2种方法_PHP教程

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

WBOY
Freigeben: 2016-07-13 10:50:08
Original
982 Leute haben es durchsucht

昨天还写了一篇关于数组合并的技术文章,那里我介绍的是一维数组合并,这里介绍一下php二维数组的合并方法,希望对各位同学会有所帮助哦。

例1

自定义方法合并数组

先看一个二维数组:

 代码如下 复制代码

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 ,所以我想让他们合并成下面这样

Array (

     [0] => Array

         (

           [A] => 商店一

           [B] => 小风

          )

      [1] => Array

         (

           [A] => 商店二

           [B] => 小磊

          )

?>

合并方法如下:

 代码如下 复制代码

$stores = array(); //定义一个空数组
        $store_count=count($showinfo);  //统计显示的次数,这里的$showinfo是我获取数据库内容时的一个变量,然后打印出来就是上面刚开始的样子
        for($i=0;$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

网店一 小风

网店二 小磊

例3

 代码如下 复制代码

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632666.htmlTechArticle昨天还写了一篇关于数组合并的技术文章,那里我介绍的是一维数组合并,这里介绍一下php二维数组的合并方法,希望对各位同学会有所帮...
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage