我有以下問題,我被卡住了。
我有兩個陣列,在第一個陣列中,我有兩個非常重要的主要索引,每個 TS00X 都是代碼并浮動其值。在第二個陣列中,我有所有值為零的代碼。
陣列 1
array (size=2)
1 =>
array (size=11)
'TS001' => float 585.81
'TS002' => float 3110.1
'TS003' => float 8763
'TS004' => float 14497.71
'TS005' => float 16695.24
'TS006' => float 8178.68
'TS007' => float 15878.4
'TS008' => float 4140.36
'TS009' => float 3196.96
'TS010' => float 1776.3
'TS011' => float 1916.16
2 =>
array (size=11)
'TS001' => int 0
'TS002' => int 0
'TS003' => int 0
'TS004' => int 0
'TS005' => int 0
'TS006' => float 11906.4
'TS007' => float 22636.8
'TS008' => float 5798.52
'TS009' => int 0
'TS010' => float 2250.9
'TS011' => float 2419.992
陣列 2:
array (size=6)
0 => string 'TS001' (length=10)
1 => string 'TS002' (length=10)
2 => string 'TS003' (length=10)
3 => string 'TS004' (length=10)
4 => string 'TS005' (length=10)
5 => string 'TS009' (length=10)
邏輯是所有具有浮點數 0 的 TS00X 都將從第一個陣列的任何索引的總和中排除。
所以:第二個陣列中的所有代碼都將從每個索引中第一個陣列的總和中排除。
也就是說,第一個陣列的索引 1 的總和必須給出:31,889.9,而對于第一個陣列的第二個索引,它將是:45,012.612。
所需的結果將是一個具有與第一個索引相同但具有正確值的陣列,如下所示:
array (size=2)
1 => float => 31.889,9
2 => float =>45.012,612
這個陣列的索引很重要,根據陣列 1 進行。
我已經嘗試了很多東西,包括這段代碼,但是第二個索引的總和總是為零!
foreach ($array1 as $idx=> $array_value) {
foreach ($array_value as $code => $float) {
foreach ($array2 as $code2) {
if (empty($sum[$idx])) {
$sum[$idx] = 0;
}
$sum[$idx] = $float;
}
}
}
uj5u.com熱心網友回復:
$array1 = [
[
'TS001' => 585.81,
'TS002' => 3110.1,
'TS003' => 8763,
'TS004' => 14497.71,
'TS005' => 16695.24,
'TS006' => 8178.68,
'TS007' => 15878.4,
'TS008' => 4140.36,
'TS009' => 3196.96,
'TS010' => 1776.3,
'TS011' => 1916.16
],
[
'TS001' => 0,
'TS002' => 0,
'TS003' => 0,
'TS004' => 0,
'TS005' => 0,
'TS006' => 11906.4,
'TS007' => 22636.8,
'TS008' => 5798.52,
'TS009' => 0,
'TS010' => 2250.9,
'TS011' => 2419.992
]
];
$array2 = [ 'TS001', 'TS002', 'TS003', 'TS004', 'TS005', 'TS009' ];
$result = [];
foreach ($array1 as $index => $item) {
$result[$index] = array_sum(array_filter($item, function ($value, $key) use ($array2) {
return !in_array($key, $array2, true);
}, ARRAY_FILTER_USE_BOTH));
}
print_r($result);
輸出:
Array
(
[0] => 31889.9
[1] => 45012.612
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443230.html
上一篇:陣列元素在bash中的所有組合
