Array1
(
[a]=>1; [b]=>2; [c]=>3
)
Array2
(
[a]=>1;[b] =>1
)
Required result:
Array1
(
[a]=>2; [b]=>3; [c]=>3
)
如何添加數組Array1的值基於他們的密鑰?謝謝。在與基於密鑰的另一個數組比較後,如何在PHP中追加到現有數組?
Array1
(
[a]=>1; [b]=>2; [c]=>3
)
Array2
(
[a]=>1;[b] =>1
)
Required result:
Array1
(
[a]=>2; [b]=>3; [c]=>3
)
如何添加數組Array1的值基於他們的密鑰?謝謝。在與基於密鑰的另一個數組比較後,如何在PHP中追加到現有數組?
部分將是陣列1可以不具有全部相同的密鑰陣列2所以,需要從兩個原始陣列的所有鍵的陣列,然後依次通過這些鍵,檢查是否它存在於任何原始數組中,並最終將其添加到最終的組合數組中。
<?php
$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 1, 'b' => 2, 'd' => 3);
$finalarr = array();
$arrkeys = array_merge(array_keys($array1), array_keys($array2));
$arrkeys = array_unique($arrkeys);
foreach($arrkeys as $key) {
$finalarr[$key] = 0;
if (isset($array1[$key])) {
$finalarr[$key] += $array1[$key];
}
if (isset($array2[$key])) {
$finalarr[$key] += $array2[$key];
}
}
print_r($finalarr);
?>
你可以嘗試這樣的事情:
foreach($array2 as $key2 => $val2){
if(key_exists($key2, $array1)) {
$array1[$key2] += $val2;
} else {
$array1[$key2] = $val2;
}
}
foreach($array1 as $key=>$value){
if(isset($array2[$key])){
$array1[$key] = $array1[$key] + $array2[$key];
}
}
不是最優雅的方式,它將使用array_walk或array_map,但我喜歡看到和知道到底發生了什麼事情。這會給你你正在尋找的東西。
如果在array1中不存在某個鍵但在array2中存在什麼? – 2014-11-05 15:52:18
現在根據問題的表述方式,他詢問將值附加到array1。如果在array1中不存在該鍵,我不認爲他會將該鍵從array2添加到array1。 – aamirl 2014-11-05 15:54:18
首先總和共同鍵,之後的值,添加其他鍵的其他數組中:
foreach ($array2 as $k2 => $a2){
if (isset($array1[$k2])){
$array1[$k2]+=$a2;
unset($array2[$k2]);
}
}
$array1 += $array2;
喜歡的東西:
$result = array();
function ParseArray(array $array, array &$result)
{
foreach ($array as $k => $v) {
if (!array_key_exists($k, $result) {
$result[$k] = $v;
} else {
$result[$k] += $v;
}
}
}
ParseArray($Array1, $result);
ParseArray($Array2, $result);
print_r($result);
你應該閱讀有關PHP array functions。該問題的
$array1 = array(
'a' => 1,
'b' => 2,
'c' => 3,
);
$array2 = array(
'a' => 1,
'b' => 1,
);
array_walk(
$array1,
function (&$value, $key) use ($array2) {
$value += (isset($array2[$key])) ? $array2[$key] : 0;
}
);
var_dump($array1);
是的,他們是!但鍵是可能包含間距的字符串 – 2014-11-05 15:43:36
如果array2包含元素'd' ....應該在array1中添加一個新元素? – 2014-11-05 15:45:11