$array1 + $array2
iki dizilerin birliği dönecektir. Onlar ilişkisel iseniz tuşları çakışıyorsa, sol İşlenenden değerler tercih edilecektir. Bu nedenle, bu değerler kaybolur gibi istediğiniz çözüm değildir.
Her iki değişken diziler olarak anlaşılmaktadır sağlanan deyimi ile yanlış bir şey yok. Bir değişken aslında bir nesne oldu, ve o kullanarak var_dump hata mümkündür çünkü ölümcül hata olasılığı oluştu. Türünü ekleyerek diziler hem değişkenleri zorlamak için PHP zorla atmalarını. Bir değişken bir nesne ise, bu etkiye sahip olacaktır:
PHP.net Manual Gönderen
"If an object is converted to an array,
the result is an array whose elements
are the object's properties. The keys
are the member variable names, with a
few notable exceptions: integer
properties are unaccessible; private
variables have the class name
prepended to the variable name;
protected variables have a '*'
prepended to the variable name. These
prepended values have null bytes on
either side."
Şimdi eklemek için iki diziyi sahip, PHP hakkında panik bir şey vardı. +
önemli iki işlenen döküm yaparken, bu atama edildi değişkeni artığını anlamsız olduğunu unutmayın. Ifadesi (array)$foo
$ foo değiştirmek değil, yeni bir değer döndürür. Bu değişkenleri bildirmek için gerektirir dillerden sezgisel olmayabilir, ancak PHP böyle bir dil değildir.
Diğer konuda, bir dizide aynı tuşa iki tane olamaz. Bu imkansız dönmek için doğru değer olarak dizi belirsiz olacak indeks yapmak istiyorum. Eğer bir kayıpsız malikâne iki diziyi birleştirmek istiyorsanız, daha karmaşık bir veri yapısını kullanmak zorunda olacak.
Benim önerim diziler bir dizi, nerede kullanmak için:
$a1 = array('a' => 1, 'b' => 2, 'c' => 3);
$a2 = array('a' => 3, 'b' => 2, 'd' => 2);
Olacak:
$a3 = array(
'a' => array(1, 3),
'b' => array(2, 2),
'c' => array(3),
'd' => array(2)
);
Ve sipariş belirlenmiş değildir. Yapısına tek önemli değişiklik, tüm birinci değerler benzer şifreler değerleri birikmiş izin vererek, dizi olmasıdır. Bu fonksiyon görevi yapar ve daha iyi bir isim yapmak olabilir:
// array(array) lossless_array_merge([$array1 [, $array2 [, $...]]])
function lossless_array_merge() {
$arrays = func_get_args();
$data = array();
foreach ($arrays as $a) {
foreach ($a as $k => $v) {
$data[$k][] = $v;
}
}
return $data;
}