PHP将二维数组某一个字段相同的数组合并起来的方法

本文实例讲述了PHP将二维数组某一个字段相同的数组合并起来的方法。分享给大家供大家参考,具体如下:

例子:

array(3) {
 [0]=>
 array(16) {
  ["id"]=>
  string(2) "42"
  ["uid"]=>
  string(2) "14"
  ["euid"]=>
  string(2) "56"
  ["did"]=>
  string(1) "1"
  ["nid"]=>
  string(1) "0"
  ["phonetime"]=>
  string(10) "1443927600"
  ["createtime"]=>
  string(10) "1443880619"
  ["type"]=>
  string(1) "3"
  ["status"]=>
  string(1) "0"
  ["atype"]=>
  string(1) "1"
  ["mtype"]=>
  string(1) "2"
  ["endtime"]=>
  string(1) "0"
  ["time"]=>
  string(10) "10月04日"
  ["date"]=>
  string(6) "周日"
  ["uname"]=>
  NULL
  ["album"]=>
  string(0) ""
 }
 [1]=>
 array(16) {
  ["id"]=>
  string(2) "40"
  ["uid"]=>
  string(2) "14"
  ["euid"]=>
  string(2) "56"
  ["did"]=>
  string(1) "1"
  ["nid"]=>
  string(1) "0"
  ["phonetime"]=>
  string(10) "1444359600"
  ["createtime"]=>
  string(10) "1444268595"
  ["type"]=>
  string(1) "3"
  ["status"]=>
  string(1) "0"
  ["atype"]=>
  string(1) "1"
  ["mtype"]=>
  string(1) "2"
  ["endtime"]=>
  string(1) "0"
  ["time"]=>
  string(10) "10月09日"
  ["date"]=>
  string(6) "周五"
  ["uname"]=>
  NULL
  ["album"]=>
  string(0) ""
 }
 [2]=>
 array(16) {
  ["id"]=>
  string(2) "43"
  ["uid"]=>
  string(1) "2"
  ["euid"]=>
  string(2) "56"
  ["did"]=>
  string(1) "1"
  ["nid"]=>
  string(1) "0"
  ["phonetime"]=>
  string(10) "1444359620"
  ["createtime"]=>
  string(10) "1444268595"
  ["type"]=>
  string(1) "3"
  ["status"]=>
  string(1) "0"
  ["atype"]=>
  string(1) "1"
  ["mtype"]=>
  string(1) "2"
  ["endtime"]=>
  string(1) "0"
  ["time"]=>
  string(10) "10月09日"
  ["date"]=>
  string(6) "周五"
  ["uname"]=>
  NULL
  ["album"]=>
  string(0) ""
 }
}

现在想要对这个二维数组下的元素,time相同的合并到同一数组下。想要的效果为:

array(2) {
 ["10月04日"]=>
 array(1) {
  [0]=>
  array(16) {
   ["id"]=>
   string(2) "42"
   ["uid"]=>
   string(2) "14"
   ["euid"]=>
   string(2) "56"
   ["did"]=>
   string(1) "1"
   ["nid"]=>
   string(1) "0"
   ["phonetime"]=>
   string(10) "1443927600"
   ["createtime"]=>
   string(10) "1443880619"
   ["type"]=>
   string(1) "3"
   ["status"]=>
   string(1) "0"
   ["atype"]=>
   string(1) "1"
   ["mtype"]=>
   string(1) "2"
   ["endtime"]=>
   string(1) "0"
   ["time"]=>
   string(10) "10月04日"
   ["date"]=>
   string(6) "周日"
   ["uname"]=>
   NULL
   ["album"]=>
   string(0) ""
  }
 }
 ["10月09日"]=>
 array(2) {
  [0]=>
  array(16) {
   ["id"]=>
   string(2) "40"
   ["uid"]=>
   string(2) "14"
   ["euid"]=>
   string(2) "56"
   ["did"]=>
   string(1) "1"
   ["nid"]=>
   string(1) "0"
   ["phonetime"]=>
   string(10) "1444359600"
   ["createtime"]=>
   string(10) "1444268595"
   ["type"]=>
   string(1) "3"
   ["status"]=>
   string(1) "0"
   ["atype"]=>
   string(1) "1"
   ["mtype"]=>
   string(1) "2"
   ["endtime"]=>
   string(1) "0"
   ["time"]=>
   string(10) "10月09日"
   ["date"]=>
   string(6) "周五"
   ["uname"]=>
   NULL
   ["album"]=>
   string(0) ""
  }
  [1]=>
  array(16) {
   ["id"]=>
   string(2) "43"
   ["uid"]=>
   string(1) "2"
   ["euid"]=>
   string(2) "56"
   ["did"]=>
   string(1) "1"
   ["nid"]=>
   string(1) "0"
   ["phonetime"]=>
   string(10) "1444359620"
   ["createtime"]=>
   string(10) "1444268595"
   ["type"]=>
   string(1) "3"
   ["status"]=>
   string(1) "0"
   ["atype"]=>
   string(1) "1"
   ["mtype"]=>
   string(1) "2"
   ["endtime"]=>
   string(1) "0"
   ["time"]=>
   string(10) "10月09日"
   ["date"]=>
   string(6) "周五"
   ["uname"]=>
   NULL
   ["album"]=>
   string(0) ""
  }
 }
}

那么。。。代码很简单,没有想象的那么复杂,想要的结果是个三维数组

$result 为原二维数组

$res = array(); //想要的结果
foreach ($result as $k => $v) {
  $res[$v['time']][] = $v;
}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • PHP简单实现合并2个数字键数组值的方法

    本文实例讲述了PHP简单实现合并2个数字键数组值的方法.分享给大家供大家参考,具体如下: 先要了解一个基础知识点:PHP合并数组+与array_merge的区别分析 <?php /** * PHP合并2个数字键数组的值 * * @param array $arr1 * @param array $arr2 * @return array */ function new_array_merge($arr1, $arr2) { if (!is_array($arr1) || !is_array($a

  • php 数组的合并、拆分、区别取值函数集

    合并数组有三个函数: 1.array_combine() 携带两个参数数组,参数数组一的值作新数组的键,参数数组二的值作新数组的值.很简单. 例子: 复制代码 代码如下: <?php $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); print_r($c); ?> 上例将输出: 复制代码 代码如下: Array ( [green]

  • PHP合并两个数组的两种方式的异同

    特别是+运算符,他的意思是,将右边的数组单元(去重复)追加到左边数组的后面. 复制代码 代码如下: <?php echo "\r\n第一种情况\r\n"; $a=array(1,2,3,4,5,6); $b=array(7,8,9); $c=array_merge ($a,$b); print_r($c); $c=$a+$b; print_r($c); $c=$b+$a; print_r($c); echo "\r\n第二种情况\r\n"; $a=array(

  • PHP中数组合并的两种方法及区别介绍

    PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码 代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码 代码如下: <?php $c = array_merge($a, $b); var_ex

  • PHP将两个关联数组合并函数提高函数效率

    在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了一下: 使用下面的字节写的函数可以解决 从数据库中取出来的数据总是或多或少不符合我们心目中的数据结构,类似于下面的俩个数组,要形成SQL中类似于left join后两个数组合并: 复制代码 代码如下: $test1 = Array( 0 => Array( 'id' => 9478137, 'create_time'

  • php数组合并array_merge()函数使用注意事项

    1.array_merge()合并 例子 $array = array('a'=>'bb'); $array2 = array('b'=>'cc'); $array3 = array_merge($array,$array2); 输出结果为 Array ( [a] => bb [b] => cc ) 上面因为都是数组就没有问题了,假如我们把$array 设置不是数组看看什么情况 $array = 1;//array('a'=>'bb'); $array2 = array('b

  • php二维数组合并及去重复的方法

    本文实例讲述了php二维数组合并及去重复的方法.分享给大家供大家参考.具体实现方法如下: $arr = array_merge($labels,$label); //合并需要合并的俩个数组 $key = id;//去重条件 $tmp_arr = array();//声明数组 foreach($arr as $k => $v) { if(in_array($v[$key], $tmp_arr)) //搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true { unset($arr

  • php下将多个数组合并成一个数组的方法与实例代码

    1.合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: 复制代码 代码如下: array array_merge (array array1 array2-,arrayN) 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面.返回作为结果的数组. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值.然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,

  • php 操作数组(合并,拆分,追加,查找,删除等)

    1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: 复制代码 代码如下: array array_merge (array array1 array2-,arrayN) 这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面.返回作为结果的数组. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值.然而,如果数组包含数字键名,后面的值将不会覆盖

  • PHP合并数组+与array_merge的区别分析

    主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉(不是覆盖) 2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉,但array_merge()此时会覆盖掉前面相同键名的值 需要注意的是数组键形式 '数字' 等价于 数字 复制代码 代

  • PHP中通过加号合并数组的一个简单方法分享

    代码: 复制代码 代码如下: <?php $a = array('a' => 'a', 'b' => 'b'); $b = array('c' => 'c', 'd' => 'd'); $c = $a + $b; print('<pre>'); print_r($c); print('</pre>'); ?> 结果: 复制代码 代码如下: Array ( [a] => a [b] => b [c] => c [d] =>

  • php中有关合并某一字段键值相同的数组合并的改进

    下面是实现代码: /** **关于参数的说明 **$key键值相同的键名 **$array代表原数组 **$start代表$array[0][$key] **$newkey代表相同键值相同的键名 **/ function combine_same_val($array,$start,$key,$newkey){ static $new; foreach($array as $k=>$v){ if($v[$key]==$start){ $new[$v[$newkey]][] = $v; unset

随机推荐