我有一个带有列标题的 CSV文件。我正在寻找的是,我该如何从列编号中取出。9 (货币金额)仅来自那些行,其中包含" xyzxxxx"代码在第二列中,并使用添加它们,仅相同的货币指定在 col No。10 ?
我到目前为止的方法是:
- 将CSV的含量解析为PHP数组。
- 将内容爆炸成不同的行。
- 检查包含" xyzxxxx"的行。
然后,我无法弄清楚如何从这些货币和货币的类型中取出这些货币的类型,并以相同的类型总结。
我认为我可以单独寻找" Eur"," GBP"&"美元"值并根据结果将行分为不同的变量,但是它是正确的方法还是我过度思考?
一些简单的解决方案:
$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
等名称的变量。使用一个带键的单个数组。