1. Vereinigung
1.1. Vereinigung ohne Überschreiben von Schlüsseln
Die Vereinigung ohne Überschreiben von Schlüsseln zweier Arrays $arr1 und $arr2 erfolgt über $arr1 + $arr2 (Additionsoperator). Das sich daraus ergebende Array enthält alle Werte aus $arr1 und zusätzlich diejenigen aus $arr2, deren Schlüssel noch nicht in $arr1 vorkommt. Alle Elemente aus $arr2, deren Schlüssel bereits in $arr1 vorkommt, werden nicht in das Ergebnis übernommen. Die Schlüssel aller aus $arr1 und $arr2 übernommenen Elemente bleiben erhalten.
<?php
	$arr1 = array('I' => 1, 'II' => 2,  'III' => 3 );
	$arr2 = array(          'II' => 20, 'III' => 30, 'IV' => 40);
	
	var_dump($arr1 + $arr2);
	var_dump($arr2 + $arr1);
?>
array(4) {
  ["I"]=>
  int(1)
  ["II"]=>
  int(2)
  ["III"]=>
  int(3)
  ["IV"]=>
  int(40)
}
array(4) {
  ["II"]=>
  int(20)
  ["III"]=>
  int(30)
  ["IV"]=>
  int(40)
  ["I"]=>
  int(1)
}
1.2. Vereinigung mit Überschreiben
Die Vereinigung aller Werte zweier Arrays $arr1 und $arr2 mit Überschreiben wird mit array_merge($arr1, $arr2) durchgeführt. Im Gegensatz zu $arr1 + $arr2 werden Elemente aus $arr2 auch dann übernommen, wenn ihr Schlüssel bereits in $arr1 vorkommt.
Achtung: array_merge() überschreibt nur bei String-Schlüsseln. Elemente mit Integer-Schlüsseln aus $arr2 werden einfach an $arr1 angefügt.
<?php
	$arr1 = array('I' => 1, 'II' => 2,  'III' => 3 );
	$arr2 = array(          'II' => 20, 'III' => 30, 'IV' => 40);
	
	var_dump(array_merge($arr1, $arr2));
	var_dump(array_merge($arr2, $arr1));
?>
array(4) {
  ["I"]=>
  int(1)
  ["II"]=>
  int(20)
  ["III"]=>
  int(30)
  ["IV"]=>
  int(40)
}
array(4) {
  ["II"]=>
  int(2)
  ["III"]=>
  int(3)
  ["IV"]=>
  int(40)
  ["I"]=>
  int(1)
}
1.3. Vereinigung unabhängig von Schlüsseln
Sollen alle Werte aus $arr1 und $arr2 in einem neuen Array vereinigt werden — unabhängig von ihren Schlüsseln — dann kann array_merge() mit array_values($arr) kombiniert werden. array_values($arr) liest alle Werte aus $arr aus und gibt sie als neues Array mit neuen Schlüsseln zurück. Die neuen Schlüssel sind Integer, beginnend bei 0 (0, 1, 2, 3, ...). Entstehende Duplikate können bei Bedarf mit array_unique($arr) entfernt werden.
<?php
	$arr1 = array('I' => 'I', 'II' => 'II', 'III' => 'III' );
	$arr2 = array(            'II' => 'II', 'III' => 'III', 'IV' => 'IV');
	
	$both = array_merge(array_values($arr1), array_values($arr2));
	
	var_dump($both);
	var_dump(array_unique($both));
?>
array(6) {
  [0]=>
  string(1) "I"
  [1]=>
  string(2) "II"
  [2]=>
  string(3) "III"
  [3]=>
  string(2) "II"
  [4]=>
  string(3) "III"
  [5]=>
  string(2) "IV"
}
array(4) {
  [0]=>
  string(1) "I"
  [1]=>
  string(2) "II"
  [2]=>
  string(3) "III"
  [5]=>
  string(2) "IV"
}
2. Schnittmenge
2.1. Schnittmenge aller Schlüssel
array_intersect_key($arr1, $arr2) dient zur Ermittlung der Schnittmenge der Schlüssel zwischen $arr1 und $arr2. Die Rückgabe umfasst alle Elemente aus $arr1 deren Schlüssel auch in $arr2 vorkommen.
<?php
	$arr1 = array('I' => 1, 'II' => 2,  'III' => 3 );
	$arr2 = array(          'II' => 20, 'III' => 30, 'IV' => 40);
	
	var_dump(array_intersect_key($arr1, $arr2));
	var_dump(array_intersect_key($arr2, $arr1));
?>
array(2) {
  ["II"]=>
  int(2)
  ["III"]=>
  int(3)
}
array(2) {
  ["II"]=>
  int(20)
  ["III"]=>
  int(30)
}
3. Schnittmenge aller Werte
Analog zur Schnittmenge der Schlüssel arbeitet die Schnittmenge der Werte. Diese wird man array_intersect($arr1, $arr2) erzeugt. Das Ergebnis enthält alle Werte aus $arr1, die auch in $arr2 vorkommen.
<?php
	$arr1 = array('I' => 1, 'II' => 2, 'III' => 3 );
	$arr2 = array(		    'II' => 2, 'III' => 3, 'IV' => 4);
	
	var_dump(array_intersect($arr1, $arr2));
	var_dump(array_intersect($arr2, $arr1));
?>
array(2) {
  ["II"]=>
  int(2)
  ["III"]=>
  int(3)
}
array(2) {
  ["II"]=>
  int(2)
  ["III"]=>
  int(3)
}
4. Differenz
4.1. Differenz aller Schlüssel
Die Differenz der Schlüssel zweier Arrays $arr1 und $arr2 wird mit array_diff_key($arr1, $arr2) bestimmt und enthält diejenigen Schlüssel aus $arr1, die nicht in $arr2 enthalten sind.
<?php
	$arr1 = array('I' => 1, 'II' => 2,  'III' => 3 );
	$arr2 = array(          'II' => 20, 'III' => 30, 'IV' => 40);
	
	var_dump(array_diff_key($arr1, $arr2));
	var_dump(array_diff_key($arr2, $arr1));
?>
array(1) {
  ["I"]=>
  int(1)
}
array(1) {
  ["IV"]=>
  int(40)
}
4.2. Differenz aller Werte
Auch die Differenz der Werte zweier Arrays $arr1 und $arr2 lässt sich ermitteln. Dies erfolgt über array_diff($arr1, $arr2). Die Rückgabe umfasst alle Werte aus $arr1, die nicht in $arr2 vorkommen.
<?php
	$arr1 = array('I' => 1, 'II' => 2, 'III' => 3 );
	$arr2 = array(          'II' => 2, 'III' => 3, 'IV' => 4);
	
	var_dump(array_diff($arr1, $arr2));
	var_dump(array_diff($arr2, $arr1));
?>
array(1) {
  ["I"]=>
  int(1)
}
array(1) {
  ["IV"]=>
  int(4)
}