  | 
 表格 15-8. 数组运算符 | 例子 | 名称 | 结果 | 
|---|
 | $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。 |  
 
    + 运算符把右边的数组附加到左边的数组后面,但是重复的键值不会被覆盖。
    
     
    执行后,此脚本会显示:
     
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" }
 |   
   
    数组中的单元如果具有相同的键名和值则比较时相等。
    
     例子 15-5. 比较数组 
<?php $a = array("apple", "banana"); $b = array(1 => "banana", "0" => "apple");
  var_dump($a == $b); // bool(true) var_dump($a === $b); // bool(false) ?>
 |  
  |   
   
    参见数组类型和数组函数章节。
     
 
 
 
  puneet singh @ value-one dot com
  19-Jan-2006 02:42
  
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
  22-Aug-2005 12:01
  
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.
 
   
  
 
 
 
 
  Peter
  29-Oct-2004 10:57
  
The code from texbungalow at web dot de below is slightly incorrect.  If my memory from primary school history is correct, roman numerals don't allow things like MIM - it has to be MCMXCIX, ie each step is only 1 level down (sorry, I can't explain it very well. 
 
a print_r($segments) comparing the snippets should explain. 
 
Corrected code: 
<?php 
function roman ($nr ) { 
     $base_digits= array ( 
           1=> "I",  
           10=> "X",  
           100=> "C",  
           1000=> "M",  
           ); 
     $help_digits= array ( 
           5=> "V",  
           50=> "L",  
           500=> "D",  
           ); 
     $all_digits= $base_digits+ $help_digits; 
     foreach ($base_digits as $key1=> $value1 ) 
           foreach ($all_digits as $key2=> $value2 ) 
                 if ($key1< $key2 && $key1 >= ($key2 / 10))  
                       $segments[$key2- $key1 ]= $value1. $value2; 
     $segments+= $all_digits; 
     krsort ($segments ); 
     foreach ($segments as $key=> $value ) 
           while ($key<= $nr ) { 
                 $nr-= $key; 
                 $str.= $value; 
                 } 
     return $str; 
     } 
echo roman (1998);   //  prints MCMXCVIII 
?>
 
   
  
 
 
  dfranklin at fen dot com
  23-Apr-2004 04:40
  
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
 
   
  
 
 
  texbungalow at web dot de
  27-Apr-2003 09:46
  
use '+=' to quickly append an array to another one: 
 
function roman ($nr ) { 
      $base_digits= array ( 
            1=> "I",  
            10=> "X",  
            100=> "C",  
            1000=> "M",  
            ); 
      $help_digits= array ( 
            5=> "V",  
            50=> "L",  
            500=> "D",  
            ); 
      $all_digits= $base_digits+ $help_digits; 
      foreach ($base_digits as $key1=> $value1 ) 
            foreach ($all_digits as $key2=> $value2 ) 
                  if ($key1< $key2 )  
                        $segments[$key2- $key1 ]= $value1. $value2; 
      $segments+= $all_digits; 
      krsort ($segments ); 
      foreach ($segments as $key=> $value ) 
            while ($key<= $nr ) { 
                  $nr-= $key; 
                  $str.= $value; 
                  } 
      return $str; 
      } 
 
echo roman (888);   //  prints DCCCLXXXVIII
 
   
  
 
 
  amirlaher AT yahoo DOT co SPOT uk
  10-Dec-2002 02:41
  
[]= 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 )
 
   
  
 
 
  |   |