php二维数组去除重复值
- <?php
- //二维数组
- $test["aa"] = array("id"=>"17","name"=>"汽车");
- $test["bb"] = array("id"=>"18","name"=>"飞机");
- $test["cc"] = array("id"=>"19","name"=>"高铁");
- $test["dd"] = array("id"=>"19","name"=>"飞机");
- //去除二维数组重复值,默认重复保留前面的值
- /*
- *array 二维数组
- *keyid 需要判断是否重复的项目
- *desc 为true时保留后面的
- */
- function array_repeat($array,$keyid="id",$desc=false)
- {
- $array = array_values($array);
- //倒叙排列数
- if($desc)
- {
- $array = array_rsort($array,true);
- }
- //提取需要判断的项目变成一维数组
- $a = array_tq($array,$keyid);
- //去除一维数组重复值
- $a = array_unique($a);
- //提取二维数组项目值
- foreach($array[0] AS $key=>$value)
- {
- $akey[] = $key;
- }
- //重新拼接二维数组
- foreach($akey AS $key=>$value)
- {
- $b = array_tq($array,$value);
- foreach($a AS $key2=>$value2)
- {
- $c[$key2][$value] = $b[$key2];
- }
- }
- if($desc)
- {
- $c = array_rsort($c,true);
- }
- return $c;
- }
- //数组倒叙
- function array_rsort($arr,$isvalues=false)
- {
- if(is_array($arr)){
- $flag = false;
- //一维数组
- if(count($arr) == count($arr,1)){
- $flag = true;
- $i = 0;
- //转换成二维数组
- foreach($arr AS $key=>$value){
- $a[$i]["okey"] = $key;
- $a[$i]["value"] = $value;
- $i++;
- }
- $arr = $a;
- }
- //多维数组
- else
- {
- //添加临时key值
- foreach($arr AS $key=>$value){
- $value["okey"] = $key;
- $array[] = $value;
- }
- $arr = $array;
- }
- //倒叙并还原key值
- $count = count($arr)-1;
- for($i=0;$i<count($arr);$i++){
- $b[$arr[$count]["okey"]] = $arr[$count];
- $count--;
- }
- //重构一维数组
- if($flag == true){
- foreach($b AS $key=>$value){
- if($isvalues){
- $c[] = $value["value"];
- }else{
- $c[$value["okey"]] = $value["value"];
- }
- }
- }
- //多维数组去除临时key值
- else
- {
- foreach($b AS $key=>$value) {
- unset($value["okey"]);
- if($isvalues){
- $c[] = $value;
- }else{
- $c[$key] = $value;
- }
- }
- }
- return $c;
- }
- }
- //提取二维数组项目
- function array_tq($array,$aval="")
- {
- foreach($array AS $key=>$value)
- {
- $result[] = $value[$aval];
- }
- return $result;
- }
- //去除id相同的项
- var_dump(array_repeat($test,"id"));
- var_dump(array_repeat($test,"id",true));
- echo "----------------------------------------";
- //去除name相同的项
- var_dump(array_repeat($test,"name"));
- var_dump(array_repeat($test,"name",true));
- ?>
php二维数组去除重复值的更多相关文章
- 二维数组去除重复值和array_unique函数
今天遇到了一个问题,就是从数据库中去除的数组为一个二维数组,现在就是想将二位数组进行去重,但是在php中,对于一个一维数组,我们可以直接使用php的系统函数array_unique,但是这个函数不能对 ...
- PHP 二维数组去掉重复值并保持原结构
PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...
- PHP二维数组去除重复,重复值相加
$arr = array( array('id' => 122, 'name' => '张三', 'amount' => '1'), array('id' => 123, 'n ...
- PHP 按二维数组的键值排序
/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...
- 使用一个for循环将N*N的二维数组的所有值置1
<?php // 使用一个for循环将N*N的二维数组的所有值置1 $n = ; $a = []; ;$i<$n*$n;$i++){ $a[$i/$n][$i%$n] = ; } prin ...
- PHP二维数组按照键值排序
在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...
- PHP二维数组--去除指定列含有重复项的数组
给定二维数组: $arr = array( '0' => array('张三',2,3,4), '1' => array('李四',2,3,4), '2' => array('张三' ...
- php如何去掉二维数组中重复的元素?
$arr=array("=>array("a","b")); 我想得到的结果是:只输出第一项(第一项和第三项相同,去第一项)和第二项这个怎么解决 ...
- php 二维数组验证一个值是否存在
php 判断数字在二维数组里 $arr = array( array('a', 'b'), array('c', 'd') ); in_array('a', $arr); // 此时返回的永远都是 f ...
随机推荐
- pycharm git工具与coding.net结合
前提:coding.net中的项目是私密项目 问题描述:在使用pycharm自带的git工具clone(或者push)代码时出现 错误如下:Push failed: Failed with error ...
- Shachar Fleishma的论文,做点云重建的几篇论文都不错
http://www.sci.utah.edu/~shachar/ 几篇论文都不错,但貌似05年之后就没有什么动作了.
- 手把手教你使用node-inspector调试nodejs
最近再看nodejs,这个东西是运行在服务端的,也就是说我们在客户端看不到相应的js代码,那么怎么调试了?目前主流的方法有三种.第一是采用node-inspector.第二种采用nodejs内置的调试 ...
- Oracle11gR2--手工建库&dbca建库
1 Oracle11gR2 dbca建库 [oracle@localhost ~]$ cd $ORACLE_BASE/database [oracle@localhost database]$ dbc ...
- RocketMQ入门(简介、特点)
简介: RocketMQ作为一款纯java.分布式.队列模型的开源消息中间件,支持事务消息.顺序消息.批量消息.定时消息.消息回溯等. 发展历程: 1. Metaq(Metamorphosis) 1. ...
- 运维自动化工具 Cobbler
简介: 关于操作系统安装方面的自动化,早前我们使用 RedHat 推出的 Kickstart 来批量安装操作系统,近年来 RedHat 又推出一个 Cobbler . Cobbler 使用 Pytho ...
- angularjs学习访问服务器(5)
(1) 后台AngularController.java代码 package com.amy.controller; import java.util.ArrayList; import java.u ...
- SPI子系统分析之四:驱动模块
内核版本:3.9.5 SPI控制器层(平台相关) 上一节讲了SPI核心层的注册和匹配函数,它是平台无关的.正是在核心层抽象了SPI控制器层的相同部分然后提供了统一的API给SPI设备层来使用.我们这一 ...
- python的 pep8 规范(看完你会感谢我的!!!)
1 缩进与换行 每级缩进使用四个空格 2 限制每行的最大长度为79个字符 3 空行 顶层函数和类之间使用两个空行 类的方法之间用一个空行 在函数中使用空行表示不同逻辑段落 4 导入位于文件的顶部 5 ...
- Madgwick算法详细解读
Madgwick算法详细解读 极品巧克力 前言 接上一篇文章<Google Cardboard的九轴融合算法>. Madgwick算法是另外一种九轴融合的方法,广泛应用在旋翼飞行器上,效果 ...