添加兩個關聯數組以使重複值不會被覆蓋的最佳方式是什麼:+
或array_ merge
?添加兩個關聯數組以使重複值不會被覆蓋的最佳方式是什麼:`+`或`array_merge`?
我很確定使用+
運算符我可以添加兩個關聯數組,這樣重複值不會被覆蓋,但是這個Answer說的是不同的東西,所以我不確定它是否真的如此。
我真的很感激,如果你可以分享一些燈,我們如何添加兩個關聯數組,使重複值不會被覆蓋。
欣賞你的時間和迴應。
添加兩個關聯數組以使重複值不會被覆蓋的最佳方式是什麼:+
或array_ merge
?添加兩個關聯數組以使重複值不會被覆蓋的最佳方式是什麼:`+`或`array_merge`?
我很確定使用+
運算符我可以添加兩個關聯數組,這樣重複值不會被覆蓋,但是這個Answer說的是不同的東西,所以我不確定它是否真的如此。
我真的很感激,如果你可以分享一些燈,我們如何添加兩個關聯數組,使重複值不會被覆蓋。
欣賞你的時間和迴應。
array_merge
將組合數組,使得沒有值丟失,只要數組具有連續的數字鍵。如果您開始混合字符串鍵,則具有相同鍵的值將被覆蓋。如果你把數組當作數組而不是映射,array_merge會做你想做的。
你真正想要array_merge_recursive 這將創建一個數組的數組,如果關鍵是相同的,但如果重複鍵找到該值是不同的
兩個array_merge和工會將放棄值之一
SO會array_merge_recursive不放棄一個VALUES如果找到重複鍵?這是100%真實的嗎? – user260204 2010-01-28 16:55:20
+1,因爲它似乎是提問者想要的 – Yacoby 2010-01-28 16:58:00
一張圖片勝過1000個字
$a = array('foo' => 'A');
$b = array('foo' => 'B');
print_r($a + $b); // foo=A
print_r(array_merge($a, $b)); // foo=B
因此,在這兩種情況下,我失去了一個值,因爲我正在尋找的是獲得兩個值,A和B爲foo,有沒有方式得到這個? – user260204 2010-01-28 16:56:43
如果要保留這兩個值,則必須更改其中至少一個值的密鑰。也許你可以編寫你自己的方法來合併兩個前綴爲所有鍵的數組。
所以你建議建議答案鏈接提供100%是真的? – user260204 2010-01-28 16:57:53
數組不能有多個具有相同鍵的鍵 - 值對。所以如果你有:
$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
//)
因此,在這兩種情況下,我會失去其中一個實體,無論是array_merge的右側還是左側的「+」運算符......在一個響應中,有人建議使用array_merge_recursively,這真的能解決問題嗎? – user260204 2010-01-28 17:00:30
謝謝artlung,清晰的表示對於獲取關於它如何工作的細節非常有幫助。 – user260204 2010-01-28 17:03:11
一個是否取代另一個,或者它們是否需要以某種方式組合?我並不清楚你想用組合陣列做什麼。 – artlung 2010-01-28 17:03:21
陣列合併不會在我的情況下工作,我有一個字符串鍵等,如果我有重複鍵而不是值寫過,所以這不是我正在尋找的。 – user260204 2010-01-28 16:52:17