PHP 8.4.0 RC4 available for testing

Array-Operatoren

Array-Operatoren
Beispiel Name Ergebnis
$a + $b Vereinigung Vereinigung von $a und $b.
$a == $b Gleichwertigkeit true wenn $a und $b dieselben Schlüssel-/Wert-Paare enthalten.
$a === $b Identität true wenn $a und $b dieselben Schlüssel-/Wert-Paare in der gleichen Reihenfolge und vom selben Typ enthalten.
$a != $b Ungleichheit true wenn $a nicht gleich$b ist.
$a <> $b Ungleichheit true wenn $a nicht gleich$b ist.
$a !== $b nicht identisch true wenn $a nicht identisch zu $b ist.

Der Operator + hängt das rechsstehende Array an das linksstehende Array an; kommen Schlüssel in beiden Arrays vor, dann werden die Elemente des linksstehenden Arrays verwendet, und die entsprechenden Elemente des rechtstehenden Arrays werden ignoriert.

<?php
$a
= array("a" => "Apfel", "b" => "Banane");
$b = array("a" =>"Birne", "b" => "Erdbeere", "c" => "Kirsche");

$c = $a + $b; // Vereinigung von $a mit $b;
echo "Vereinigung von \$a mit \$b: \n";
var_dump($c);

$c = $b + $a; // Vereinigung von $b mit $a;
echo "Vereinigung von \$b mit \$a: \n";
var_dump($c);

$a += $b; // Vereinigung von $a += $b ist $a + $b
echo "Vereinigung von \$a += \$b: \n";
var_dump($a);
?>
Dieses Skript gibt folgendes aus:
Vereinigung von $a mit $b:
array(3) {
  ["a"]=>
  string(5) "Apfel"
  ["b"]=>
  string(6) "Banane"
  ["c"]=>
  string(7) "Kirsche"
}
Vereinigung von $b mit $a:
array(3) {
  ["a"]=>
  string(4) "Birne"
  ["b"]=>
  string(8) "Erdbeere"
  ["c"]=>
  string(7) "Kirsche"
}
Vereinigung von $a += $b:
array(3) {
  ["a"]=>
  string(5) "Apfel"
  ["b"]=>
  string(6) "Banane"
  ["c"]=>
  string(6) "Kirsche"
}

Beim Vergleich werden Arrayelemente als gleich angesehen, wenn diese dieselben Schlüssel und Werte beinhalten.

Beispiel #1 Array-Vergleiche

<?php
$a
= array("Apfel", "Banane");
$b = array(1 => "Banane", "0" => "Apfel");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

add a note

User Contributed Notes 8 notes

up
237
cb at netalyst dot com
16 years ago
The union operator did not behave as I thought it would on first glance. It implements a union (of sorts) based on the keys of the array, not on the values.

For instance:
<?php
$a
= array('one','two');
$b=array('three','four','five');

//not a union of arrays' values
echo '$a + $b : ';
print_r ($a + $b);

//a union of arrays' values
echo "array_unique(array_merge($a,$b)):";
// cribbed from http://oreilly.com/catalog/progphp/chapter/ch05.html
print_r (array_unique(array_merge($a,$b)));
?>

//output

$a + $b : Array
(
[0] => one
[1] => two
[2] => five
)
array_unique(array_merge(Array,Array)):Array
(
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
)
up
42
Q1712 at online dot ms
17 years ago
The example may get u into thinking that the identical operator returns true because the key of apple is a string but that is not the case, cause if a string array key is the standart representation of a integer it's gets a numeral key automaticly.

The identical operator just requires that the keys are in the same order in both arrays:

<?php
$a
= array (0 => "apple", 1 => "banana");
$b = array (1 => "banana", 0 => "apple");

var_dump($a === $b); // prints bool(false) as well

$b = array ("0" => "apple", "1" => "banana");

var_dump($a === $b); // prints bool(true)
?>
up
25
dfranklin at fen dot com
20 years ago
Note that + will not renumber numeric array keys. If you have two numeric arrays, and their indices overlap, + will use the first array's values for each numeric key, adding the 2nd array's values only where the first doesn't already have a value for that index. Example:

$a = array('red', 'orange');
$b = array('yellow', 'green', 'blue');
$both = $a + $b;
var_dump($both);

Produces the output:

array(3) { [0]=> string(3) "red" [1]=> string(6) "orange" [2]=> string(4) "blue" }

To get a 5-element array, use array_merge.

Dan
up
7
xtpeqii at Hotmail dot com
7 years ago
$a=[ 3, 2, 1];
$b=[ 6, 5, 4];
var_dump( $a + $b );

output:
array(3) {
[0]=>
int(3)
[1]=>
int(2)
[2]=>
int(1)
}

The reason for the above output is that EVERY array in PHP is an associative one.
Since the 3 elements in $b have the same keys( or numeric indices ) as those in $a, those elements in $b are ignored by the union operator.
up
19
amirlaher AT yahoo DOT co SPOT uk
21 years ago
[]= could be considered an Array Operator (in the same way that .= is a String Operator).
[]= pushes an element onto the end of an array, similar to array_push:
<?
$array= array(0=>"Amir",1=>"needs");
$array[]= "job";
print_r($array);
?>
Prints: Array ( [0] => Amir [1] => needs [2] => job )
up
13
Dan Patrick
12 years ago
It should be mentioned that the array union operator functions almost identically to array_replace with the exception that precedence of arguments is reversed.
up
1
mufeedbinismail at gmail dot com
1 day ago
In the example
<?php
$a
= array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

You might think the expression returns false because the type of the key 0 is a string. However, this is not the case. Here, the expression returns false because the order of the elements is wrong.

ie.
<?php
$b
= array(1 => "banana", 0 => "apple");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(true)
?>

If you want to understand how the type checking works, This example showcases the behavior.

<?php
$a
= array(0 => 1.0, 1 => 2.0);
$b = array(0 => "1.0", 1 => "2.0");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>
up
0
Anonymous
2 years ago
Merge two arrays and retain only unique values.
Append values from second array.
Do not care about keys.

<?php
$array1
= [
0 => 'apple',
1 => 'orange',
2 => 'pear',
];

$array2 = [
0 => 'melon',
1 => 'orange',
2 => 'banana',
];

$result = array_keys(
array_flip($array1) + array_flip($array2)
);
?>

Result:
[
[0] => "apple",
[1] => "orange",
[2] => "pear",
[3] => "melon",
[4] => "banana",
}
To Top