Home  >  Article  >  Backend Development  >  How to get the different parts of two arrays in php

How to get the different parts of two arrays in php

PHPz
PHPzOriginal
2023-04-20 09:11:19454browse

PHP is a popular open source scripting language widely used for web development. In the daily work of PHP developers, it is often necessary to compare two arrays and find the different parts between them. This article will share some methods to achieve different arrays.

  1. array_diff() function

The array_diff() function in PHP can be used to compare the difference between two arrays. It returns the set of values ​​for which the first array differs from the other arrays. The following is a sample code:

$a1 = array("apple", "orange", "banana");
$a2 = array("orange", "banana", "pear");
$result = array_diff($a1, $a2);
print_r($result);

The running result will be printed out:

Array ( [0] => apple )
  1. array_udiff() function

PHP also provides the array_udiff() function. This function allows you to customize a callback function to compare values ​​in an array. This is a more flexible method suitable for more complex data comparisons. Here is the sample code:

function my_array_diff($a1, $a2) {
    return strcmp($a1,$a2);
}

$a1 = array("apple", "orange", "banana");
$a2 = array("orange", "banana", "pear");
$result = array_udiff($a1, $a2, "my_array_diff");
print_r($result);

This function will also return the set of values ​​in the first array that are different from the other arrays.

  1. array_diff_key() function

The array_diff_key() function is used to compare the keys of two arrays, not the values ​​corresponding to the keys. It returns the set of keys for which the first array differs from the other arrays. The following is the sample code:

$a1 = array("a" => "apple", "b" => "orange", "c" => "banana");
$a2 = array("a" => "orange", "b" => "banana", "d" => "pear");
$result = array_diff_key($a1, $a2);
print_r($result);

This function only returns the element with the key "c" in $a1, because there is no corresponding key in $a2.

  1. Multidimensional array comparison

If you need to compare different parts of a multidimensional array, you need to use a recursive function for comparison. The following is sample code for a recursive function:

function array_diff_recursive($array1, $array2) {
    $result = array();
    foreach($array1 as $key => $value) {
        if(is_array($value)) {
            if(!isset($array2[$key]) || !is_array($array2[$key])) {
                $result[$key] = $value;
            } else {
                $diff = array_diff_recursive($value, $array2[$key]);
                if(!empty($diff)) {
                    $result[$key] = $diff;
                }
            }
        } else if(!array_key_exists($key,$array2) || $array2[$key] !== $value) {
            $result[$key] = $value;
        }
    }
    return $result;
}

This function compares two multidimensional arrays and returns an array containing only the values ​​in which the first array differs from the other arrays.

Summary

Whether you need to compare two simple arrays or multidimensional arrays, PHP has many built-in functions to help you do it. The array_diff() function can compare the different parts between two arrays, the array_udiff() function allows you to customize the callback function to compare the values ​​in the array, the array_diff_key() function compares the keys of the two arrays, not the values, and finally, if If you need to compare different parts of a multidimensional array, you need to use a recursive function for comparison. Knowing these methods makes it easier for you to perform tasks related to array comparisons.

The above is the detailed content of How to get the different parts of two arrays in php. 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