php parse .csv文件中的数组,仅添加某些行的某些元素



我有一个带有列标题的 CSV文件。我正在寻找的是,我该如何从列编号中取出。9 (货币金额)仅来自那些行,其中包含" xyzxxxx"代码在第二列中,并使用添加它们,仅相同的货币指定在 col No。10

我到目前为止的方法是:

  1. 将CSV的含量解析为PHP数组。
  2. 将内容爆炸成不同的行。
  3. 检查包含" 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等名称的变量。使用一个带键的单个数组。

最新更新