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数组的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did31369