好得很程序员自学网

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

php 数组合并根据分类重新合并 - php数组

php 数组合并根据分类重新合并

在php中如果是简单的数组合并有很多的方法,但是我今天要求是根据数组ID然后重新合并数组,是要根据分类来操作。

最简单的数组合并我们只要使用array_merge即可,array_merge()将两个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面,返回作为结果的数组。

数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用[+]合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值[抛弃]掉(注意:不是覆盖而是保留最先出现的那个值),例子代码如下:

$array1  =  array (1=> '0' );     $array2  =  array (1=>  "data" );        $result1  =  $array2  +  $array1 ; /*结果为$array2的值*/       print_r( $result );       $result  =  $array1  +  $array2  ; /*结果为$array1的值*/       print_r( $result );       $result3  =  array_merge ( $array2 , $array1 ); /*结果为$array2和$array1的值,键名被重新分配*/       print_r( $result3 );       $result4  =  array_merge ( $array1 , $array2 ); /*结果为$array1和$array2的值,键名被重新分配*/       print_r( $result4 );  输出结果为:  Array ( [1] => data )  Array ( [1] => 0 )  Array (  [0] => data  [1] => 0  )  Array  (  [0] => 0  [1] => data  ) 

当相同数组键名为字符时,[+]运算符与键名为数字时一样,但array_merge()此时会覆盖掉前面相同键名的值。

例子代码如下:

$array1  =  array ( 'asd' => '0' );     $array2  =  array ( 'asd'  =>  "data" );     $result1  =  $array2  +  $array1 ; /*结果为$array2的值*/     print_r( $result );       $result  =  $array1  +  $array2  ; /*结果为$array1的值*/       print_r( $result );       $result3  =  array_merge ( $array2 , $array1 ); /*结果为$array1*/       print_r( $result3 );       $result4  =  array_merge ( $array1 , $array2 ); /*结果为$array2*/       print_r( $result4 );  /*   输出结果为:   Array ( [asd] => data )   Array ( [asd] => 0 )   Array ( [asd] => 0 )   Array ( [asd] => data )   */  

讲了这么多费话,下面才是我要给各位朋友介绍的.例,根据分类字段进行数组重组,代码如下:

<?php   //需要重组的数组    $arrar = array ();   $array []= array ( 'ItemID'  => 110126866896, 'CategoryID' =>111);   $array []= array ( 'ItemID'  => 120126866896, 'CategoryID' =>112);   $array []= array ( 'ItemID'  => 130126866896, 'CategoryID' =>113);   $array []= array ( 'ItemID'  => 140126866896, 'CategoryID' =>114);   $array []= array ( 'ItemID'  => 150126866896, 'CategoryID' =>115);   $array []= array ( 'ItemID'  => 160126866896, 'CategoryID' =>116);   $array []= array ( 'ItemID'  => 170126866896, 'CategoryID' =>117);   $array []= array ( 'ItemID'  => 118126866896, 'CategoryID' =>111);   $array []= array ( 'ItemID'  => 121126866896, 'CategoryID' =>112);   $array []= array ( 'ItemID'  => 132126866896, 'CategoryID' =>113);   $array []= array ( 'ItemID'  => 143126866896, 'CategoryID' =>114);   $array []= array ( 'ItemID'  => 154126866896, 'CategoryID' =>115);   $array []= array ( 'ItemID'  => 165126866896, 'CategoryID' =>116);   $array []= array ( 'ItemID'  => 176126866896, 'CategoryID' =>117);   //数组根据分类进行重组    $newArray = array ();   foreach ( $array   as   $val ){        $newArray [ $val [ 'CategoryID' ]][]= $val ;   }       //删除原始数组释放空间    $array =null;   unset( $array );   print_r( $newArray );   ?> 

查看更多关于php 数组合并根据分类重新合并 - php数组的详细内容...

  阅读:48次