In PHP, comparing different elements between two arrays is a common need, for example:
This article will introduce Several ways to compare different elements of an array in PHP.
Method 1: Use the array_diff function
The array_diff function is a built-in function in PHP that compares array differences. The usage of this function is as follows:
array array_diff ( array $array1 , array $array2 [, array $... ] )
This function accepts two arrays Parameter, returns a new array containing the elements in the first array that do not appear in the second array.
For example, the following code compares the difference between two arrays:
$arr1 = [1, 2, 3, 4, 5]; $arr2 = [4, 5, 6, 7, 8]; $diff = array_diff($arr1, $arr2); print_r($diff); // 输出 [1, 2, 3]
Although the array_diff function can find the different elements of two arrays, if there are duplicate elements in the array, the function may Incorrect results will occur.
For example:
$arr1 = [1, 2, 3, 3, 3, 4, 5]; $arr2 = [3, 4, 5, 5, 5, 6, 7]; $diff = array_diff($arr1, $arr2); print_r($diff); // 输出 [1, 2]
In this example, the result of the $diff array should be [1, 2, 3], but because there are multiple "3" in both the $arr1 and $arr2 arrays ” and “5”, so the array_diff function cannot compare the differences correctly.
Method 2: Use array_diff_assoc function
The array_diff_assoc function is also a PHP built-in function, but this function compares whether the keys and values in the two arrays are equal.
The usage of this function is as follows:
array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )
Accepts two or more array parameters and returns all elements in the first array that do not exist in other arrays or whose keys and values are not equal.
For example:
$arr1 = ["a" => 1, "b" => 2, "c" => 3]; $arr2 = ["a" => 1, "b" => 2, "c" => 4]; $diff = array_diff_assoc($arr1, $arr2); print_r($diff); // 输出 ["c" => 3]
In this example, the result of the $diff array is ["c" => 3], because the value corresponding to the "c" key in the $arr1 array is 3 , there is no such key in the $arr2 array or the value is not equal to 3.
Method 3: Use a custom function
Using a custom function to compare different elements of two arrays is a versatile and customizable method.
For example, the following is a function that compares different elements in two arrays:
function array_diff_custom($arr1, $arr2) { $diff = []; foreach ($arr1 as $key => $value) { if (!in_array($value, $arr2)) { $keyInArr2 = array_search($value, $arr2); if ($keyInArr2 !== false) { unset($arr2[$keyInArr2]); } $diff[$key] = $value; } } foreach ($arr2 as $key => $value) { $diff[$key] = $value; } return $diff; }
This function implements the following functions:
For example:
$arr1 = [1, 2, 3, 3, 3, 4, 5]; $arr2 = [3, 4, 5, 5, 5, 6, 7]; $diff = array_diff_custom($arr1, $arr2); print_r($diff); // 输出 [0 => 1, 1 => 2, 2 => 3, 5 => 4, 6 => 5, 7 => 6, 8 => 7]
Because the custom function uses traversal, its efficiency is low, and performance problems may occur when the array is large.
Conclusion
This article introduces three ways to compare different elements of an array in PHP, array_diff function, array_diff_assoc function and custom function. They each have their own advantages and disadvantages. Choosing the appropriate method depends on Application scenarios and specific needs.
The above is the detailed content of How to compare different elements of an array in php. For more information, please follow other related articles on the PHP Chinese website!