php二维数组合并及去重复的方法

关于“PHP二维数组合并及去重复的方法”的问题,我可以给你提供以下的攻略。

什么是二维数组

在 PHP 中,二维数组是一个包含多个数组的数组,每个子数组可以包含一个或多个元素。二维数组主要使用“数组名[下标1][下标2]”这种方式访问。

例如:

$array = array( 
        array("name","age","sex"), 
        array("Tom","20","male"), 
        array("Jerry","21","male"), 
        array("Lisa","19","female") 
        );

以上例子中,$array 是一个二维数组,包含 4 个子数组。

接下来我们针对二维数组合并和去重复问题进行说明。

合并二维数组

PHP 中的 array_merge() 函数可以用于合并两个或多个数组。例如,我们有两个数据:

$A = array(
    array('id'=>1,'name'=>'张三'),
    array('id'=>2,'name'=>'李四'),
);
$B = array(
    array('id'=>3,'name'=>'王五'),
    array('id'=>2,'name'=>'李四'),
);

如果我们想把 $B 中的内容合并到 $A 中,可以这么写:

$mergeArr = array_merge($A, $B);

结果会变为:

array(
    array('id'=>1,'name'=>'张三'),
    array('id'=>2,'name'=>'李四'),
    array('id'=>3,'name'=>'王五'),
    array('id'=>2,'name'=>'李四'),
)

从结果来看,虽然 $B 中的二维数组与 $A 中的一个二维数组重复了,但却没有被去重。如果我们想要去重,就需要使用 array_unique() 函数进行去重。

去重二维数组

为了让二维数组去重,需要先对二维数组中的每个子数组进行排序。上面的例子中,我们要对它们按照 id 字段进行排序,可以这样写:

// 对数组 $mergeArr 的 id 字段排重
$idList = array_unique(array_column($mergeArr, 'id'));

foreach ($mergeArr as $key => $value) {
    $existKey = array_search($value['id'], $idList);
    if (is_numeric($existKey) && $existKey != $key) {
        unset($mergeArr[$key]);
    }
}

// 对数组 $mergeArr 的其他字段去重
$mergeArr = array_map("unserialize", array_unique(array_map("serialize", $mergeArr)));

这样,$mergeArr 数组就变成了这样:

array(
    array('id'=>1,'name'=>'张三'),
    array('id'=>2,'name'=>'李四'),
    array('id'=>3,'name'=>'王五'),
)

充分体现了去重的效果。

示例说明

示例一: 合并两个二维数组,并去掉重复的数组。

<?php
$A = array(
    array('id'=>1,'name'=>'张三'),
    array('id'=>2,'name'=>'李四'),
);
$B = array(
    array('id'=>3,'name'=>'王五'),
    array('id'=>2,'name'=>'李四'),
);

$mergeArr = array_merge($A, $B);

$idList = array_unique(array_column($mergeArr, 'id'));

foreach ($mergeArr as $key => $value) {
    $existKey = array_search($value['id'], $idList);
    if (is_numeric($existKey) && $existKey != $key) {
        unset($mergeArr[$key]);
    }
}

$mergeArr = array_map("unserialize", array_unique(array_map("serialize", $mergeArr)));

print_r($mergeArr);
?>

输出结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
        )
)

以上结果中,去掉了二维数组中的重复元素。

示例二: 给一个二维数组按照其中的某一个字段去重。

<?php
$array = array( 
    array('id'=>1,'name'=>'张三'), 
    array('id'=>2,'name'=>'李四'),
    array('id'=>3,'name'=>'张三') 
);

$idList = array_unique(array_column($array, 'id'));

foreach ($array as $key => $value) {
    $existKey = array_search($value['id'], $idList);
    if (is_numeric($existKey) && $existKey != $key) {
        unset($array[$key]);
    }
}

$array = array_map("unserialize", array_unique(array_map("serialize", $array)));

print_r($array);
?>

输出结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
        )
)

以上结果中,根据数组中的 id 字段完成了去重的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php二维数组合并及去重复的方法 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php多个文件及图片上传实例详解

    PHP多个文件及图片上传实例详解 本文将详细讲解PHP多个文件及图片上传的过程,使读者能够了解如何使用PHP编写上传文件的功能。主要内容包括: 表单上传方式 Ajax异步上传方式 文件大小限制、类型限制 上传进度条显示 1. 表单上传方式 表单上传方式是最常用的文件上传方式,其基本原理是利用 标签的enctype属性来指定表单数据的编码类型,将数据以二进制形…

    PHP 2023年5月26日
    00
  • php实现的rc4加密解密类定义与用法示例

    PHP实现的RC4加密解密类定义与用法示例 什么是RC4加密算法 RC4是一种流密码算法,也称为“Ron’s Code”或“Rivest Cipher 4”,由Ron Rivest1994年设计。该算法基于可变长度密钥,将数据流与密钥进行混合,生成随机流来加密数据。传统上RC4被广泛应用在WEP无线网络加密中,但是现在因为其存在许多问题,比如密钥长度过短,被…

    PHP 2023年5月26日
    00
  • php使用simple_html_dom解析HTML示例

    下面就给您讲解一下“php使用simple_html_dom解析HTML示例”的完整攻略。 一、简介 simple_html_dom是一个功能强大的PHP第三方库,主要用于HTML文本的解析、遍历以及查找。使用simple_html_dom库,我们可以方便地获取HTML文本中的各种元素和属性,进而对其进行分析处理。 二、安装 simple_html_dom库…

    PHP 2023年5月26日
    00
  • PHP实现的简单四则运算计算器功能示例

    下面是详细的攻略: 基本思路 本示例的目标是实现一个简单的四则运算计算器,用户输入两个数字和运算符,然后输出计算结果。具体步骤如下: 前端页面中提供两个输入框和一个下拉菜单,分别用于输入数字和运算符。 用户输入数字和运算符后,点击“计算”按钮。 前端页面将输入的数据通过AJAX发送到后端PHP脚本。 后端PHP脚本对输入的数据进行校验和计算,并返回结果。 前…

    PHP 2023年5月27日
    00
  • PHP获取数组长度或某个值出现次数的方法

    获取数组长度可以使用PHP内置函数count(),该函数接受一个数组作为参数,返回该数组的元素个数。例如,获取数组$arr的长度可以这样写: $count = count($arr); 获取某个值在数组中出现的次数,可以使用array_count_values()函数,该函数接受一个数组作为参数,并返回一个新数组,该数组的key为原数组中的值,value为该…

    PHP 2023年5月26日
    00
  • php实现表单提交上传文件功能

    实现表单提交上传文件功能,需要使用PHP的文件上传功能。本攻略将从以下几点来详细讲解如何实现: 设置表单提交方式为POST,并添加enctype=”multipart/form-data”属性 PHP接收文件并保存 对上传的文件进行判断和处理 1. 设置表单提交方式为POST,并添加enctype属性 在HTML表单中,需要将表单的提交方式设置为POST,并…

    PHP 2023年5月26日
    00
  • PHP实现的多彩标签效果代码分享

    下面是“PHP实现的多彩标签效果代码分享”的完整攻略: 1. 分析需求 在开始编写代码之前,我们需要先了解需求,这里的需求是实现一个多彩标签效果。该效果可以显示不同的标签类别,并且不同类别的标签具有不同的颜色。 2. 编写HTML代码 首先,我们需要先编写HTML代码,用于展示标签效果。HTML代码可参考如下: <div class="tag…

    PHP 2023年5月23日
    00
  • PHP fopen函数用法实例讲解

    PHP fopen函数用法实例讲解 1. fopen函数是什么? fopen函数是PHP中使用最多的函数之一,用于打开文件,可以实现文件的读取、写入、创建等操作。 2. fopen函数用法 fopen函数的用法如下: resource fopen ( string $filename , string $mode [, bool $use_include_p…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部