我试图从两个数组中减去值。我也尝试过使用if
条件,null
值,foreach
和许多其他方法,例如array_filter
,但是失败了。
$exit_price
包含:
array (
0 => 2205,
1 => 6680,
2 => 50351,
3 => 100,
4 => 100,
5 => 1200,
6 => 900,
7 => 234,
8 => 2342,
9 => 45654
)
$stoploss
包含:
array (
0 => null,
1 => null,
2 => null,
3 => null,
4 => null,
5 => null,
6 => 145300,
7 => null,
8 => null,
9 => 12222
)
如何通过从$stoploss
中减去$exit_price
来获得以下结果,而忽略$stoploss
值为null
的结果呢?
预期结果:
array (
6 => -144400,
9 => 33432
)
答案 0 :(得分:2)
一种方法可能是将两个数组都传递给array_map。
在array_map内部,检查stoploss
的当前项是否不为null。如果不是,则进行减法。
在array_map之后,使用array_filter删除空值:
$exit_price = [
0 => 2205,
1 => 6680,
2 => 50351,
3 => 100,
4 => 100,
5 => 1200,
6 => 900,
7 => 234,
8 => 2342,
9 => 45654
];
$stoploss = [
0 => null,
1 => null,
2 => null,
3 => null,
4 => null,
5 => null,
6 => 145300,
7 => null,
8 => null,
9 => 12222
];
$result = array_map(function ($x, $y) {
if (null !== $y) {
return $x - $y;
}
return null;
}, $exit_price, $stoploss);
print_r(array_filter($result, function ($z) {
return null !== $z;
}));
答案 1 :(得分:2)
您可以简单地迭代第一个数组,然后检查第二个数组中的相应元素的null
值。如果该值不为null,则执行减法运算,并使用当前键将差异存储在新的“结果”数组中。
$results = [];
foreach ($stoploss as $key => $value) {
if (!is_null($value)) {
$results[$key] = $exit_price[$key] - $value;
}
}