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
)
PHP.mk документација
Низа
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
language.operators.array.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
language.operators.array.php
Низа
Референца за `language.operators.array.php` со подобрена типографија и навигација.
Array Оператори
| Пример | Име | Резултат |
|---|---|---|
| $a + $b | Унија | Унија на $a and $b. |
| $a == $b | Еднаквост | true if $a and $b ги имаат истите парови клуч/вредност. |
| $a === $b | Идентитет | true if $a and $b ги имаат истите парови клуч/вредност во ист редослед и од исти типови. |
| $a != $b | Нееднаквост | true if $a не е еднакво на $b. |
| $a <> $b | Нееднаквост | true if $a не е еднакво на $b. |
| $a !== $b | Non-identity | true if $a не е идентично со $b. |
На + операторот ја враќа десната низа додадена на левата низа; за клучевите што постојат во двете низи, ќе се користат елементите од левата низа, а соодветните елементи од десната низа ќе бидат игнорирани.
Пример #1 Оператор за додавање низа
<?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);
$a += $b; // Union of $a += $b is $a and $b
echo "Union of \$a += \$b: \n";
var_dump($a);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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"
}
Union of $a += $b:
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
string(6) "cherry"
}
Елементите на низите се еднакви за споредбата ако ги имаат истиот клуч и вредност.
Пример #2 Споредба на низи
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>Белешки од корисници Управување со PDO конекции
cb на netalyst dot com ¶
пред 17 години
Q1712 на online dot ms ¶
пред 18 години
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)
?>
dfranklin на fen dot com ¶
21 години пред
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 ¶
пред 23 години
[]= 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 )
xtpeqii на Hotmail dot com ¶
пред 8 години
$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.
Дан Патрик ¶
пред 14 години
It should be mentioned that the array union operator functions almost identically to array_replace with the exception that precedence of arguments is reversed.
Анонимен ¶
3 години пред
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",
}