- 79浏览
- 2023-04-10
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;
}
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。