PHP 8.6.0 Beta 1 is available for testing

Операторы для работы с массивами

Операторы массивов
Пример Название Результат
$a + $b Объединение Объединение массива $a с массивом $b.
$a == $b Равно Возвращает true , если массив в переменной $a и массив в переменной $b содержат одни и те же пары «ключ — значение».
$a === $b Тождественно равно Возвращает true , если массив в переменной $a и массив в переменной $b содержат одни и те же пары «ключ — значение» в том же порядке и того же типа.
$a != $b Не равно Возвращает true , если массив в переменной $a не равен массиву в переменной $b.
$a <> $b Не равно Возвращает true , если массив в переменной $a не равен массиву в переменной $b.
$a !== $b Тождественно не равно Возвращает true , если массив в переменной $a не равен тождественно массиву в переменной $b.

Оператор + возвращает левый массив, к которому присоединился правый массив. Для ключей, которые содержатся в обоих массивах, выбираются значения из левого массива, а элементы из правого массива, которые им соответствуют, игнорируются.

Пример #1 Оператор добавления одного массива в конец другого

<?php
$a = array("a" => "яблоко", "b" => "банан");
$b = array("a" => "груша", "b" => "клубника", "c" => "вишня");
$c = $a + $b; // Объединение массивов $a и $b
echo "Объединение массивов \$a и \$b:\n";
var_dump($c);
$c = $b + $a; // Объединение массивов $b и $a
echo "Объединение массивов \$b и \$a:\n";
var_dump($c);
$a += $b; // Выражение $a += $b объединяет массивы $a и $b
echo "Объединение массивов выражением \$a += \$b:\n";
var_dump($a);
?>

Результат выполнения приведённого примера:

Объединение массивов $a и $b:
array(3) {
 ["a"]=>
 string(12) "яблоко"
 ["b"]=>
 string(10) "банан"
 ["c"]=>
 string(10) "вишня"
}
Объединение массивов $b и $a:
array(3) {
 ["a"]=>
 string(10) "груша"
 ["b"]=>
 string(16) "клубника"
 ["c"]=>
 string(10) "вишня"
}
Объединение массивов $a += $b:
array(3) {
 ["a"]=>
 string(12) "яблоко"
 ["b"]=>
 string(10) "банан"
 ["c"]=>
 string(10) "вишня"
}

При сравнении элементы массива признаются идентичными, если совпадает и ключ, и значение ключа.

Пример #2 Сравнение массивов

<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

Смотрите также

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 7 notes

up
242
cb at netalyst dot com
17 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
43
Q1712 at online dot ms
19 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
22 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
22
amirlaher AT yahoo DOT co SPOT uk
23 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
8
xtpeqii at Hotmail dot com
8 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
13
Dan Patrick
14 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
Anonymous
3 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",
}
+Добавить

AltStyle によって変換されたページ (->オリジナル) /