php 两个二维数组怎么去重

worktile 其他 184

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    使用PHP提供的array_merge函数将两个二维数组合并,并使用array_unique函数去除重复项。

    以下是实现的代码示例:

    “`php
    $array1 = array(
    array(‘A’, ‘B’, ‘C’),
    array(‘D’, ‘E’, ‘F’),
    array(‘G’, ‘H’, ‘I’)
    );

    $array2 = array(
    array(‘A’, ‘B’, ‘C’),
    array(‘J’, ‘K’, ‘L’),
    array(‘M’, ‘N’, ‘O’)
    );

    // 将两个二维数组合并
    $mergedArray = array_merge($array1, $array2);

    // 去除重复项
    $uniqueArray = array_map(“unserialize”, array_unique(array_map(“serialize”, $mergedArray)));

    // 打印去重后的数组
    print_r($uniqueArray);
    “`

    输出结果:

    “`
    Array
    (
    [0] => Array
    (
    [0] => A
    [1] => B
    [2] => C
    )

    [1] => Array
    (
    [0] => D
    [1] => E
    [2] => F
    )

    [2] => Array
    (
    [0] => G
    [1] => H
    [2] => I
    )

    [5] => Array
    (
    [0] => J
    [1] => K
    [2] => L
    )

    [6] => Array
    (
    [0] => M
    [1] => N
    [2] => O
    )

    )
    “`

    以上代码先将两个二维数组合并为一个一维数组,然后使用array_map函数将所有值先序列化后再反序列化,再使用array_unique函数去除重复项。最后得到的数组即为去重后的结果。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,可以使用array_unique()函数来去除数组中的重复值。但是对于二维数组,array_unique()函数只能去除第一层数组的重复值,不能处理多层嵌套的重复值。如果要对二维数组去重,可以使用以下方法:

    1. 使用循环和in_array()函数:遍历二维数组中的每一个元素,逐个判断是否已经存在于一个新数组中,如果不存在,则将其添加到新数组中。这样就能实现二维数组去重。

    “`php
    function unique_array($array) {
    $result = array();
    foreach($array as $key => $value) {
    if (!in_array($value, $result)) {
    $result[] = $value;
    }
    }
    return $result;
    }

    $unique_array = unique_array($array);
    “`

    2. 使用array_map()函数和serialize()函数:将二维数组先通过array_map()函数遍历成一维数组,再使用serialize()函数将每个元素序列化为字符串,然后使用array_unique()函数对一维数组进行去重,最后使用array_map()函数和unserialize()函数将去重后的一维数组恢复为二维数组。

    “`php
    function unique_array($array) {
    $temp = array_map(‘serialize’, $array);
    $unique_temp = array_unique($temp);
    $result = array_map(‘unserialize’, $unique_temp);
    return $result;
    }

    $unique_array = unique_array($array);
    “`

    3. 使用array_merge()函数和call_user_func_array()函数:将二维数组通过array_merge()函数合并成一维数组,然后使用array_unique()函数对一维数组进行去重,最后使用call_user_func_array()函数将去重后的一维数组重新分割为二维数组。

    “`php
    function unique_array($array) {
    $merged_array = call_user_func_array(‘array_merge’, $array);
    $unique_merged_array = array_unique($merged_array);
    $result = array_chunk($unique_merged_array, count($array[0]));
    return $result;
    }

    $unique_array = unique_array($array);
    “`

    4. 使用array_walk_recursive()函数和in_array()函数:通过array_walk_recursive()函数遍历二维数组中的每一个元素,然后使用in_array()函数判断该元素是否已经存在于一个新数组中,如果不存在,则将其添加到新数组中。

    “`php
    function unique_array($array) {
    $result = array();
    array_walk_recursive($array, function($value) use (&$result) {
    if (!in_array($value, $result)) {
    $result[] = $value;
    }
    });
    return $result;
    }

    $unique_array = unique_array($array);
    “`

    5. 使用array_reduce()函数和in_array()函数:通过array_reduce()函数将二维数组转换为一维数组,然后使用in_array()函数判断该元素是否已经存在于一个新数组中,如果不存在,则将其添加到新数组中。

    “`php
    function unique_array($array) {
    $merged_array = array_reduce($array, function($carry, $item) {
    return array_merge($carry, $item);
    }, array());
    $result = array();
    foreach($merged_array as $value) {
    if (!in_array($value, $result)) {
    $result[] = $value;
    }
    }
    return $result;
    }

    $unique_array = unique_array($array);
    “`

    这些方法可以根据不同的需求选择合适的方式进行二维数组去重。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以使用array_unique()函数来对一个二维数组去重。下面是具体的操作流程:

    1. 定义两个二维数组:
    “`php
    $arr1 = array(
    array(“name” => “Tom”, “age” => 20),
    array(“name” => “Jerry”, “age” => 25),
    array(“name” => “Alice”, “age” => 30)
    );

    $arr2 = array(
    array(“name” => “Jerry”, “age” => 25),
    array(“name” => “Bob”, “age” => 28),
    array(“name” => “Alice”, “age” => 30)
    );
    “`

    2. 将两个二维数组合并为一个新的二维数组:
    “`php
    $mergedArray = array_merge($arr1, $arr2);
    “`

    3. 使用array_map()函数结合匿名函数进行比较:
    “`php
    $uniqueArray = array_map(“unserialize”, array_unique(array_map(“serialize”, $mergedArray)));
    “`

    4. 打印去重后的结果:
    “`php
    print_r($uniqueArray);
    “`

    完整的代码如下:
    “`php
    $arr1 = array(
    array(“name” => “Tom”, “age” => 20),
    array(“name” => “Jerry”, “age” => 25),
    array(“name” => “Alice”, “age” => 30)
    );

    $arr2 = array(
    array(“name” => “Jerry”, “age” => 25),
    array(“name” => “Bob”, “age” => 28),
    array(“name” => “Alice”, “age” => 30)
    );

    $mergedArray = array_merge($arr1, $arr2);

    $uniqueArray = array_map(“unserialize”, array_unique(array_map(“serialize”, $mergedArray)));

    print_r($uniqueArray);
    “`

    输出结果:
    “`
    Array
    (
    [0] => Array
    (
    [name] => Tom
    [age] => 20
    )

    [1] => Array
    (
    [name] => Jerry
    [age] => 25
    )

    [2] => Array
    (
    [name] => Alice
    [age] => 30
    )

    [3] => Array
    (
    [name] => Bob
    [age] => 28
    )

    )
    “`

    以上是一种针对二维数组去重的方法,通过将二维数组序列化后再去除重复元素,然后再反序列化得到去重后的结果。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部