【发布时间】:2019-08-22 14:57:42
【问题描述】:
我有两个数组,如 $a 和 $b。对于相同的键,我想从 $a 减去 $b 。另外我想看到两个数组的不匹配键与减法结果。 只有匹配的键会被减去。是否可以不使用 foreach 循环?不是强制性的,它必须在没有循环的情况下解决。但是如果没有循环就更好了。示例数组在下面。
$a=Array
(
[1] => 4.00
[2] => 3.00
[3] => 8.00
[4] => 4.88
[5] => 7.88
[10] => 17.88
)
$b=Array
(
[1] => 2.00
[3] => 4.00
[4] => 2.88
[7] => 5.00
[8] => 6.00
)
我想要这样的结果
$result=array(
[1] => 2.00
[2] => 3.00
[3] => 4.00
[4] => 2.00
[5] => 7.88
[7] => 5.00
[8] => 6.00
[10] => 17.88
);
我的代码是:
$res1=$res2=$res3=array();
foreach( $a as $k1=>$v1 ){
foreach($b as $k2=>$v2){
if($k1==$k2){
$res1[$k1]=$v2-$v1;
}else{
$res2[$k2]=v2;
$res3[$k1]=v1;
}
}
}
$res[]=array_merge($res1,$res2,$res3);
echo "<pre>"; print_r($res); echo "</pre>";
但它没有给出我想要的正确结果。
【问题讨论】:
-
不应该 7 是 -5 而 8 应该是 -6 吗?为什么这些是积极的。其余的遵循 $a - $b 的模式,但那些没有
-
实际上积极消极对我来说并不重要。逻辑上应该是负数。
-
是否可以不使用 foreach 循环? 为什么?
-
我已经在我的脚本中使用了许多循环,这就是我想避免使用 foreach 的原因。顺便说一句,避免 foreach 循环不是强制性的,但如果可以避免则更好。
-
Shardj 你能帮帮我吗?
标签: php