Home  >  Article  >  Backend Development  >  How to remove duplicates from php two-dimensional array

How to remove duplicates from php two-dimensional array

PHPz
PHPzOriginal
2023-04-27 15:54:232015browse

In PHP, a two-dimensional array refers to an array containing multiple arrays, that is, the elements in the array are arrays, and its form is as follows:

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

In a two-dimensional array, we may encounter To duplicate elements, in this case, we need to remove the duplicates. So, how to remove weight?

Method 1: Use the array_unique function

The array_unique function can remove duplicate values ​​​​in the array, but it can only be used for one-dimensional arrays, so it needs to be processed on the two-dimensional array. The specific idea is as follows:

We can traverse each subarray in the two-dimensional array, convert it to a string, and save it to a new array. Then, the new array is deduplicated, and the final result is a deduplicated two-dimensional array.

The code is implemented as follows:

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $temp = array_unique($temp);
    $result = array();
    foreach ($temp as $key => $value) {
        $result[$key] = explode(',', $value);
    }
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);

The output result is as follows:

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

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

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

)

Method 2: Use array_reduce function

array_reduce function can merge two-dimensional arrays into one dimension array and perform deduplication operations on it. The specific idea is as follows:

We can first convert each sub-array in the two-dimensional array into a string and save it to a new array. Then, use the array_reduce function to combine the new arrays into a string, and use the array_unique function to deduplicate the string. Finally, use the explode function to convert the deduplicated string into a two-dimensional array.

The code is implemented as follows:

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $result = array_reduce($temp, function($carry, $item){
        if (!in_array($item, $carry)) {
            $carry[] = $item;
        }
        return $carry;
    }, array());
    $result = array_map(function($item) {
        return explode(',', $item);
    }, $result);
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);

The output results are as follows:

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

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

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

)

Summary

The above are the two methods of deduplication of two-dimensional arrays in PHP. Both methods use PHP's built-in functions, and the specific implementation ideas are relatively simple. It should be noted that when using the array_reduce function, you need to use the array_map function to convert the deduplicated string into a two-dimensional array.

The above is the detailed content of How to remove duplicates from php two-dimensional array. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn