Home > Article > Backend Development > How to get the different parts of two arrays in php
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.
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 )
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.
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.
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!