我有一个二维数组,如:
fruits [
[apple, 10],
[orange, 30],
[banana, 7]
]
在循环中,我想根据水果类型更新数量。 例如:如果我还有4个香蕉和20个草莓新阵列就像:
fruits [
[apple, 10],
[orange, 30],
[banana, 11],
[strawberry, 20]
]
我怎么能这样做? 提前致谢
答案 0 :(得分:2)
试试这个:(它适用于您的阵列,但下面有更好的解决方案)
$old = [
["apple", 10],
["orange", 30],
["banana", 7]
];
$new = [
["banana", 4],
["strawberry", 20],
];
function sumArrays($old, $new)
{
foreach($new as $n) {
$fruit = $n[0];
$found = false;
foreach($old as &$o) {
if($o[0] == $fruit) {
$o[1] += $n[1];
$found = true;
break;
}
}
if(!$found) {
$o[] = $n;
}
}
return $old;
}
var_dump(sumArrays($old, $new));
但效果不佳。如果水果名称是数组的关键,那会好得多:
$arr = [
"apple" => 10,
"orange" => 30,
"banana" => 7
];
这样sum函数可以是
function sumArrays($old, $new)
{
foreach($new as $fruit => $value) {
if(empty($old[$fruit])) {
$old[$fruit] = $value;
} else {
$old[$fruit] += $value;
}
}
return $old;
}
这是一个更干净的代码,它更有效