PHP二维数组去重算法

 更新时间:2016年12月17日 10:50:09   作者:chenyanxx  
本文给大家分享的代码是php实现的二维数组根据键值合并并去重复的算法,非常实用,有需要的小伙伴可以参考下

需求

现在有下面一组二维数组:

array(8) {
 [0]=>
 array(2) {
  ["name"]=>
  string(4) "name"
  ["value"]=>
  string(6) "青叶"
 }
 [1]=>
 array(2) {
  ["name"]=>
  string(5) "phone"
  ["value"]=>
  string(11) "13812341234"
 }
 [2]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_507[]"
  ["value"]=>
  string(12) "我是青叶"
 }
 [3]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_508[]"
  ["value"]=>
  string(6) "合肥"
 }
 [4]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_509[]"
  ["value"]=>
  string(3) "男"
 }
 [5]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(6) "足球"
 }
 [6]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(6) "棒球"
 }
 [7]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_511[]"
  ["value"]=>
  string(16) "2016-12-15T11:15"
 }
}

需要将处于第二维键名为name,其值相同的数组的value合并,形成一个新的数组。

比如上面代码中的name为fileds_510的两个二维数组,就应该合并为一个值为足球,棒球的数组。

思路

提到数组,再PHP中我们首先想到了循环,那么这里显然比较适合使用for循环处理,与冒泡排序相似,一个个比较,最好处理。

代码

代码如下:

$public_info = 数组;
for ($i=0;$i<count($public_info);$i++) {
  for ($j=$i+1;$j<count($public_info);$j++) {
    if ($public_info[$j]['name'] == $public_info[$i]['name']) {
      $public_info[$i]['value'] .= ',' . $public_info[$j]['value'];
      unset($public_info[$j]);
    }
  }
}

执行结果:

array(7) {
 [0]=>
 array(2) {
  ["name"]=>
  string(4) "name"
  ["value"]=>
  string(6) "青叶"
 }
 [1]=>
 array(2) {
  ["name"]=>
  string(5) "phone"
  ["value"]=>
  string(11) "13812341234"
 }
 [2]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_507[]"
  ["value"]=>
  string(12) "我是青叶"
 }
 [3]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_508[]"
  ["value"]=>
  string(6) "合肥"
 }
 [4]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_509[]"
  ["value"]=>
  string(3) "男"
 }
 [5]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_510[]"
  ["value"]=>
  string(13) "足球,棒球"
 }
 [7]=>
 array(2) {
  ["name"]=>
  string(12) "fileds_511[]"
  ["value"]=>
  string(16) "2016-12-15T11:15"
 }
}

总结

需求已搞定,只要遇到数组,我们第一个想到的除了现成的PHP方法之外,就是循环,不管是foreach还是for,上面例子是我项目处理的一个自定义表单编辑的小段过程,希望对大家思路有帮助。

相关文章

  • PHP 源代码分析 Zend HashTable详解

    PHP 源代码分析 Zend HashTable详解

    在PHP的Zend引擎中,有一个数据结构非常重要,它无处不在,是PHP数据存储的核心,各种常量、变量、函数、类、对象等都用它来组织,这个数据结构就是HashTable。
    2009-08-08
  • 解析php开发中的中文编码问题

    解析php开发中的中文编码问题

    其实php开发中的中文编码并没有想像的那么复杂,虽然定位和解决问题没有定规,各种运行环境也各不尽然,但后面的原理是一样的。了解字符集的知识是解决字符问题的基础
    2013-08-08
  • php数组使用规则分析

    php数组使用规则分析

    这篇文章主要介绍了php数组使用规则,实例分析了php中数组的用法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 学习php设计模式 php实现门面模式(Facade)

    学习php设计模式 php实现门面模式(Facade)

    这篇文章主要介绍了php设计模式中的门面模式,使用php实现门面模式,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法

    Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法

    这篇文章主要介绍了Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法,涉及memcache服务器的安装及php操作memcache存储session的相关技巧,需要的朋友可以参考下
    2016-05-05
  • 深入apache host的配置详解

    深入apache host的配置详解

    本篇文章是对apache host的配置进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 探讨如何把session存入数据库

    探讨如何把session存入数据库

    本篇文章是对如何把session存入数据库的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 解析Ubuntu下crontab命令的用法

    解析Ubuntu下crontab命令的用法

    本篇文章是对关于Ubuntu下crontab命令的一些用法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP array_combine() 函数内置函数

    PHP array_combine() 函数内置函数

    这篇文章主要介绍了PHP array_combine()函数内置函数,array_combine()是PHP中的一个内置函数,用于组合两个数组并通过使用一个数组作为键和另一个数组作为值来创建一个新数组
    2022-09-09
  • PHP CURL与java http使用方法详解

    PHP CURL与java http使用方法详解

    这篇文章主要为大家详细介绍了PHP CURL与java http使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论