我有一个带有列标题的 csv文件。我正在寻找的是,如何从列号中取出数字。 9 (货币金额)仅来自那些在第二列中包含“XYZxxxx”代码的行,并使用仅指定相同种类的货币添加它们在 col no。 10
到目前为止,我的方法是:
然后我无法弄清楚,如何从这些中取出货币的数量和货币的类型,并用相同的类型加总。
我想我可以分别查看“EUR”,“GBP”和& “USD”值并根据结果将行分组为不同的变量,但这是一种正确的方法还是我过度思考它?
答案 0 :(得分:1)
一些简单的解决方案:
$array = [
[10, 'DOLLAR'],
[20, 'DOLLAR'],
[25, 'EURO'],
[20, 'DOLLAR'],
[25, 'EURO'],
];
$sums = [];
foreach ($array as $item) {
if (empty($sums[$item[1]])) {
$sums[$item[1]] = $item[0];
} else {
$sums[$item[1]] += $item[0];
}
}
echo'<pre>',print_r($sums),'</pre>';
//Array
//(
// [DOLLAR] => 50
// [EURO] => 50
//)
扩展示例:
$array = [
[10, 'DOLLAR', 'XYZ1010'],
[20, 'DOLLAR', 'ABC'],
[25, 'EURO', 'XYZ1010'],
[20, 'DOLLAR', 'XYZ1010'],
[25, 'EURO', 'ABC'],
];
$sums = [];
foreach ($array as $item) {
if (strpos($item[2], 'XYZ') !== false) {
if (empty($sums[$item[1]])) {
$sums[$item[1]] = $item[0];
} else {
$sums[$item[1]] += $item[0];
}
}
}
echo'<pre>',print_r($sums),'</pre>';
//Array
//(
// [DOLLAR] => 30
// [EURO] => 25
//)
不要使用$dol
,$gbp
等名称创建大量变量。使用带锁的单个数组。