运算符
在线手册:中文  英文

数组运算符

数组运算符
例子 名称 结果
$a + $b 联合 $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

+ 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。

<?php
$a 
= array("a" => "apple""b" => "banana");
$b = array("a" => "pear""b" => "strawberry""c" => "cherry");

$c $a $b// Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);

$c $b $a// Union of $b and $a
echo "Union of \$b and \$a: \n";
var_dump($c);
?>
执行后,此脚本会显示:
Union of $a and $b:
array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}
Union of $b and $a:
array(3) {
  ["a"]=>
  string(4) "pear"
  ["b"]=>
  string(10) "strawberry"
  ["c"]=>
  string(6) "cherry"
}

数组中的单元如果具有相同的键名和值则比较时相等。

Example #1 比较数组

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

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

参见数组类型数组函数章节。


运算符
在线手册:中文  英文

用户评论:

sd6733531 at gmail dot com (2013-03-30 07:18:12)

Look out use + with array combine.
$arr = array(1, 2, 3);
$int=345;
$arr=$arr+$int;
Of couse,use + to combine array is easy and readable.
But if one of the variable is not array type(like above code) ,that would make a PHP Fatal Error:
PHP Fatal error: Unsupported operand types
Maybe should do check before.

Dan Patrick (2012-03-04 18:39:01)

It should be mentioned that the array union operator functions almost identically to array_replace with the exception that precedence of arguments is reversed.

cb at netalyst dot com (2008-10-15 11:39:13)

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
)

csaba at alum dot mit dot edu (2008-06-24 08:54:14)

Simple array arithmetic:
A more compact way of adding or subtracting the elements at identical keys...

<?php
function array_add($a1$a2) {  // ...
  // adds the values at identical keys together
  
$aRes $a1;
  foreach (
array_slice(func_get_args(), 1) as $aRay) {
    foreach (
array_intersect_key($aRay$aRes) as $key => $val$aRes[$key] += $val;
    
$aRes += $aRay; }
  return 
$aRes; }

function 
array_subtract($a1$a2) {  // ...
  // adds the values at identical keys together
  
$aRes $a1;
  foreach (
array_slice(func_get_args(), 1) as $aRay) {
    foreach (
array_intersect_key($aRay$aRes) as $key => $val$aRes[$key] -= $val;
    foreach (
array_diff_key($aRay$aRes) as $key => $val$aRes[$key] = -$val; }
  return 
$aRes; }

Example:
$a1 = array(987);
$a2 = array(1=>765);
$a3 = array(2=>543);

$aSum array_add($a1$a2$a3);
$aDiff array_subtract($a1$a2$a3);

// $aSum  => [9, 15, 18, 9, 3]
// $aDiff => [9, 1, -4, -9, -3]
?>

To make a similar function, array_concatenate(), change only the first of the two '+=' in array_add() to '.='
Csaba Gabor from Vienna

csaba at alum dot mit dot edu (2007-12-13 01:42:40)

Simple array arithmetic:
If you want to add or subtract the elements at identical keys...

<?php
function array_add($a1$a2) {  // ...
  // adds the values at identical keys together
  
$aRes $a1;
  
$aRays func_get_args();
  for (
$i=1;$i<sizeof($aRays);++$i) {
    
$aRay $aRays[$i];
    foreach (
$aRay as $key => $val)
      if (
array_key_exists($key$aRes))
        
$aRes[$key] += $aRay[$key];
    
$aRes += $aRay; }
  return 
$aRes; }

function 
array_subtract($a1$a2) {  // ...
  // subtracts the values at identical keys from the corresponding value in $a1
  
$aRes $a1;
  
$aRays func_get_args();
  for (
$i=1;$i<sizeof($aRays);++$i) {
    
$aRay $aRays[$i];
    foreach (
$aRay as $key => $val) {
      if (
array_key_exists($key$aRes)) $aRes[$key] -= $aRay[$key];
      else 
$aRes[$key] = -$aRay[$key]; } }
  return 
$aRes; }

Example:
$a1 = array(987);
$a2 = array(1=>765);
$a3 = array(2=>543);

$aSum array_add($a1$a2$a3);
$aDiff array_subtract($a1$a2$a3);

// $aSum  => [9, 15, 18, 9, 3]
// $aDiff => [9, 1, -4, -9, -3]
?>

To make a similar function, array_concatenate(), change the first += only in array_add() to .=
Csaba Gabor from Vienna

Q1712 at online dot ms (2007-04-20 17:54:27)

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 (=> "apple"=> "banana");
$b = array (=> "banana"=> "apple");

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

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

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

puneet singh @ value-one dot com (2006-01-18 10:42:58)

hi  just see one more example of union....

<?php
$a 
= array(1,2,3);
$b = array(1,7,8,9,10);
$c $a $b// Union of $a and $b
echo "Union of \$a and \$b: \n";
//echo $c
print_r($c);
?> 
//output
Union of $a and $b: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 9 [4] => 10 )

kit dot lester at lycos dot co dot uk (2005-08-21 09:01:56)

When comparing arrays that have (some or all) element-values that are themselves array, then in PHP5 it seems that == and === are applied recursively - that is
* two arrays satisfy == if they have the same keys, and the values at each key satisfy == for whatever they happen to be (which might be arrays);
* two arrays satisfy === if they have the same keys, and the values at each key satisfy === for whatever (etc.).
Which explains what happens if we compare two arrays of arrays of arrays of...
Likewise, the corresponding inversions for != <> and !==.
I've tested this to array-of-array-of-array, which seems fairly convincing. I've not tried it in PHP4 or earlier.

kit dot lester at lycos dot co dot uk (2005-08-21 08:44:12)

This manual page doesn't mention < & co for arrays, but example 15-2 in
http://www.php.net/manual/en/language.operators.comparison.php
goes to some lengths to explain how they work.

dfranklin at fen dot com (2004-04-22 13:40:32)

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

amirlaher AT yahoo DOT co SPOT uk (2002-12-09 22:41:51)

[]= 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 )

易百教程