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

<?php
function  combine($array,$start,$key,$newkey){
  static $new; //静态变量
  foreach($array as $k=>$v){
    if($v[$key]==$start){
      $new[$v[$newkey]][] = $v;
      unset($array[$k]);
      continue;
    }
  }
  sort($array);
  if(count($array)!==0){
    combine($array,$array[0][$key],$key,$newkey);//递归调用
  }
  return $new;
}

$array=array();
$array=array(array(‘a‘=>‘aaa‘,‘b‘=>‘bbb‘),array(‘a‘=>‘aaa‘,‘b‘=>‘ccc‘),array(‘a‘=>‘123‘,‘b‘=>‘3456‘));
$key=‘a‘;
$newkey=‘a‘;
$list=combine($array,$array[0][$key],$key,$newkey);
foreach($list as $key=>$val){
    $new_list[]=$val;
}
print_r($new_list);
/**
 * Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [a] => aaa
                    [b] => bbb
                )

            [1] => Array
                (
                    [a] => aaa
                    [b] => ccc
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [a] => 123
                    [b] => 3456
                )

        )

)

 */
?>
时间: 2024-12-08 18:30:37

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($array[$

Python中字典容器dict默认按照键值从大到小存储的证明

在做项目中无意中发现,dict是按照键值排好序存储的.

array_keys::PHP所有键值组合新数组

在PHP的数组中,如果你想将数组中所有键值提取出来组成一个新的数组,可以使用array_keys 函数. 函数用法如: array_keys(array,value) W3C中是这样介绍的: array_keys() 函数返回包含数组中所有键名的一个新数组. 如果提供了第二个参数,则只返回键值为该值的键名. 如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型. <?php $color=array("b"=>"

php数组键值操作和数组统计函数-函数

1.数组函数//作用:提供了很多官方写的很多有用的代码段,提高编写速度 1)数组的键值操作函数 array_values();//获取数组中的值 array_keys();//获取数组中的键 in_array();//检查一个值是否在数组中 array_flip();//键和值对调 array_reverse();//数组中的值反转 模拟获取key的数值<?php $arr=array ("name"=>"user1","age"=&

附加类型的实体失败,因为相同类型的其他实体已具有相同的主键值。在使用 &quot;Attach&quot; 方法或者将实体的状态设置为 &quot;Unchanged&quot; 或 &quot;Modified&quot; 时如果图形中的任何实体具有冲突键值

var list= DAL.LoadEntities(x => x.OrderCode == orderCode).AsNoTracking().ToList().FirstOrDefault(); 在EF查询的时候加上AsNoTracking() 此时再对list进行赋值操作 只要主键不变,然后调用: DAL.EditEntity(list); DbContext.SaveChanges(); 即可将修改的结果保存到数据库

【WinRT】获取 Uri 中的参数(QueryString)键值对

在控制台或者其它类型的项目中,可以添加 System.Web,使用以下代码来获取一个 Uri 中的参数 Uri uri = new Uri("http://www.cnblogs.com/h82258652/?gender=male&age=17"); NameValueCollection collection = HttpUtility.ParseQueryString(uri.Query); for (int index = 0; index < collectio

输出Bag中的所有记录为一个只有值的json数组---精通android、IOS App应用服务程序开发

闭合的json格式内容 不需要 初始化Bag中的记录 同上一博(也可见下边完整代码相关部分) 把Bag中的所有记录的name值累加成一个字符串 <for bags=item end="@{item:getLength}"> <if x="@{item:getSuffix}" else=1> <bag id=pPage x=0><we name=name>"@{item:name}"</we&g

排序数组以及遍历普通对象的键值对以及如何遍历一个不同键值的对象数组

var array = [12,3,67,88,9,344,78,6]; var obj1 = {'name':'小林','age':'18','sex':'男'}; var obj2 = [{'name':'小明'},{'age':'33'},{'sex':'男'},{'sport':'篮球'}]; var keys = [],values = [];//遍历obj1用来存储 键和值的 var keys2 = [],values2 = [];//遍历obj2用来存储 键和值的 array.so

Json引入键值key&amp;value,数组,嵌套

Ajax&Json JSP页面 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loo