站三界导航
首页 PHP代码tp5常用公共方法-二维数组去重(支持多字段同时匹配去重)

tp5常用公共方法-二维数组去重(支持多字段同时匹配去重)

  • PHP代码
  • 来源:站三界导航
  • 42阅读
  • 2022-09-09

function moreArrayUnique($arr, $field = [], $allField = true)

{

//必须是传入数组

if (!is_array($field)) return false;

//先把二维数组中的内层数组的键值记录在在一维数组中

foreach ($arr[0] as $k => $v) $allField[] = $k;

if ($field) {

//按照顺序排字段名

foreach ($allField as $key => $val) {

if (!in_array($val, $field)) unset($allField[$key]);

}

$field = $allField;

}

foreach ($arr as $k => $v) {

foreach ($v as $key => $item) {

if (!in_array($key, $field)) unset($v[$key]);

}

//降维 用implode()也行

$v = implode(",", $v);

//保留原来的键值 $temp[]即为不保留原来键值

$temp[$k] = $v;

}

//去重:去掉重复的元素

$arr = array_unique($temp);

if ($allField) {

foreach ($arr as $k => $v) {

//拆分后的重组 如:Array( [0] => 张三 [1] => 18 )

$a = explode(",", $v);

//将原来的键与值重新合并

$arrAfter[] = array_combine($field, $a);

}

} else {

//将键值保存为一维数组

$allKey = array_keys($temp);

$arrAfter = [];

foreach ($arr as $k => $v) {

//数组去重

if (!in_array($k, $allKey)) {

unset($arr[$k]);

} else {

$a = explode(",", $v);

$arrAfter[] = array_combine($field, $a);

}
}
}
return $arrAfter ?? false;
}

本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/10181.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。