2010-01-28 20 views
0

添加兩個關聯數組以使重複值不會被覆蓋的最佳方式是什麼:+array_ merge添加兩個關聯數組以使重複值不會被覆蓋的最佳方式是什麼:`+`或`array_merge`?

我很確定使用+運算符我可以添加兩個關聯數組,這樣重複值不會被覆蓋,但是這個Answer說的是不同的東西,所以我不確定它是否真的如此。

我真的很感激,如果你可以分享一些燈,我們如何添加兩個關聯數組,使重複值不會被覆蓋。

欣賞你的時間和迴應。

回答

0

array_merge將組合數組,使得沒有值丟失,只要數組具有連續的數字鍵。如果您開始混合字符串鍵,則具有相同鍵的值將被覆蓋。如果你把數組當作數組而不是映射,array_merge會做你想做的。

+0

陣列合併不會在我的情況下工作,我有一個字符串鍵等,如果我有重複鍵而不是值寫過,所以這不是我正在尋找的。 – user260204 2010-01-28 16:52:17

1

你真正想要array_merge_recursive 這將創建一個數組的數組,如果關鍵是相同的,但如果重複鍵找到該值是不同的

兩個array_merge和工會將放棄值之一

+0

SO會array_merge_recursive不放棄一個VALUES如果找到重複鍵?這是100%真實的嗎? – user260204 2010-01-28 16:55:20

+0

+1,因爲它似乎是提問者想要的 – Yacoby 2010-01-28 16:58:00

0

一張圖片勝過1000個字

$a = array('foo' => 'A'); 
$b = array('foo' => 'B'); 

print_r($a + $b);    // foo=A 
print_r(array_merge($a, $b)); // foo=B 
+0

因此,在這兩種情況下,我失去了一個值,因爲我正在尋找的是獲得兩個值,A和B爲foo,有沒有方式得到這個? – user260204 2010-01-28 16:56:43

1

如果要保留這兩個值,則必須更改其中至少一個值的密鑰。也許你可以編寫你自己的方法來合併兩個前綴爲所有鍵的數組。

+0

所以你建議建議答案鏈接提供100%是真的? – user260204 2010-01-28 16:57:53

3

數組不能有多個具有相同鍵的鍵 - 值對。所以如果你有:

$array1 = array(
    'foo' => 5, 
    'bar' => 10, 
    'baz' => 6 
); 

$array2 = array(
    'x' => 100, 
    'y' => 200, 
    'baz' => 30 
); 

如果你結合這些數組,你只能保留組合數組的值之一。您所描述的方法做兩個不同的東西:

print_r(($array1 + $array2)); 

// Result: 
// Array 
// (
//  [foo] => 5 
//  [bar] => 10 
//  [baz] => 6 
//  [x] => 100 
//  [y] => 200 
//) 

print_r(array_merge($array1, $array2)); 

// Result: 
// Array 
// (
//  [foo] => 5 
//  [bar] => 10 
//  [baz] => 30 
//  [x] => 100 
//  [y] => 200 
//) 

所以,你真的需要定義你想什麼當你把數組的情況發生。

UPDATE

基於@ davidosomething的答案,這裏會發生什麼,如果你做array_merge_recursive()

print_r(array_merge_recursive($array1, $array2)); 

// Result: 
// Array 
// (
//  [foo] => 5 
//  [bar] => 10 
//  [baz] => Array 
//   (
//    [0] => 6 
//    [1] => 30 
//  ) 
// 
//  [x] => 100 
//  [y] => 200 
//) 
+0

因此,在這兩種情況下,我會失去其中一個實體,無論是array_merge的右側還是左側的「+」運算符......在一個響應中,有人建議使用array_merge_recursively,這真的能解決問題嗎? – user260204 2010-01-28 17:00:30

+0

謝謝artlung,清晰的表示對於獲取關於它如何工作的細節非常有幫助。 – user260204 2010-01-28 17:03:11

+0

一個是否取代另一個,或者它們是否需要以某種方式組合?我並不清楚你想用組合陣列做什麼。 – artlung 2010-01-28 17:03:21

相關問題