In PHP, if I want to perform union, intersection and difference operations on two arrays, we can directly use PHP’s own functions to operate such as array_merge(), array_intersect(), array_diff().
// Calculate the difference between array_merge and "+"
The array_merge() function merges two or more arrays into one array.
If there are duplicate key names, the key value of the key will be the value corresponding to the last key name (the later one will overwrite the previous one). If the array is numerically indexed, the key names are re-indexed consecutively.
Note: If only an array is input to the array_merge() function, and the keys are integers, the function will return a new array with integer keys, with keys re-indexed starting from 0. (see example 2)
The code is as follows |
Copy code |
代码如下 |
复制代码 |
$a = array(1 => 'a', 'b', 'c');
$b = array(1 => 'aa', 2, 'c');
$union = array_merge($a, $b);
$plus = $a + $b;
print_r($union);
print_r($plus);
结果依次为:
Array
{
[0]=> a
[1]=> b
[2]=> c
[3]=> aa
[4]=> 2
[5]=> c
}
Array
(
[1] => a
[2] => b
[3] => c
)
|
$a = array(1 => 'a', 'b', 'c');
$b = array(1 => 'aa', 2, 'c');
$union = array_merge($a, $b);
$plus = $a + $b;
代码如下 |
复制代码 |
$a2 = array('str' => 'a', 'b', 'c');
$b2 = array('str' => 'aa', 2, 'c');
$union2 = array_merge($a2, $b2);
$plus2 = $a2 + $b2;
print_r($union2);
print_r($plus2);
结果依次为:
Array
(
[str] => aa
[0] => b
[1] => c
[2] => 2
[3] => c
)
Array
(
[str] => a
[0] => b
[1] => c
)
|
print_r($union);
print_r($plus);
The results are:
Array
{
[0]=> a
[1]=> b
[2]=> c
[3]=> aa
[4]=> 2
[5]=> c
代码如下 |
复制代码 |
$a = array('jpg','png','gif','bmp');
$b = array('JPG','txt','docx','bmp');
$intersection = array_intersect($a, $b);
|
}
Array
(
[1] => a
代码如下 |
复制代码 |
$intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
print_r($intersection);
print_r($intersection2);
|
[2] => b
[3] => c
)
|
When the two arrays to be merged have the same string key, using array_merge() will overwrite the original value,
Using "+" to merge arrays will return the first value as the final result just like using "+" to merge arrays with the same numeric key, as in the following example:
The code is as follows |
Copy code |
$a2 = array('str' => 'a', 'b', 'c');
$b2 = array('str' => 'aa', 2, 'c');
$union2 = array_merge($a2, $b2);
$plus2 = $a2 + $b2;
print_r($union2);
print_r($plus2);
The results are:
Array
(
[str] => aa
[0] => b
[1] => c
[2] => 2
[3] => c
)
Array
(
[str] => a
[0] => b
[1] => c
)
|
Note: If you want to use array_merge to merge two arrays, the returned result may still have the same elements. In this case, you can use array_unique() to remove the same elements
//Calculate the intersection of arrays
The array_intersect() function returns the intersection array of two or more arrays.
The result array contains all values in the compared array that also appear in all other parameter arrays, and the key names remain unchanged.
Note: Only values are used for comparison.
The code is as follows |
Copy code |
$a = array('jpg',' png','gif','bmp');
$b = array('JPG','txt','docx','bmp');
$intersection = array_intersect($a, $b);
|
You can also use functions to get what you want (for example, elements are not case-sensitive)
The code is as follows |
Copy code |
$intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
print_r($intersection);
print_r($intersection2);
|
The results are:
代码如下 |
复制代码 |
Array
(
[3] => bmp
)
Array (
[0] => jpg
[3] => bmp
)
|
//Calculate the difference set of arrays
The code is as follows
代码如下 |
复制代码 |
$old = array('jpg','png','gif','bmp');
$new = array('JPG','txt','docx','bmp');
$difference = array_diff($old, $new);
|
|
Copy code
|
$old = array('jpg','png','gif','bmp');
$new = array('JPG','txt','docx','bmp');
代码如下 |
复制代码 |
Array
(
[0] => jpg
[1] => png
[2] => gif
) |
$difference = array_diff($old, $new);
Note: The returned result elements include $old elements and do not include $new elements
print_r($difference);
The result is:
The code is as follows
|
Copy code
代码如下 |
复制代码 |
$difference = array_diff(array_map('strtolower',$old), array_map('strtolower',$new));
|
|
Array |
(
[0] => jpg
[1] => png
[2] => gif
)
You can also use a function to process it first and then calculate the difference
The array_diff() function returns the difference array of two arrays. This array contains all keys that are in the array being compared, but are not in any of the other argument arrays.
In the returned array, the key names remain unchanged.
Grammar
array_diff(array1,array2,array3...)
The code is as follows
|
Copy code
|
http://www.bkjia.com/PHPjc/633094.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/633094.htmlTechArticleIn php, if I want to perform union, intersection and difference operations on two arrays, we can Directly use PHP's own functions to operate such as array_merge(), array_intersect(), array_diff(). //Calculate...
|
|