【问题标题】:php calculate values from a loopphp从循环中计算值
【发布时间】:2023-03-09 01:08:01
【问题描述】:

我无法理解这一点。
我有一个包含公司名称和某个值的csv-文件。

我运行一个从csv 获取公司名称和值的脚本。
一个公司可以包含多个值。 这是它的样子

[company1][123]
[company1][65456]
[company1][435]
[company1][234235]
[company2][65464]
[company2][53543]

我想做的是从每个单独的公司获取每个值,并计算来自该特定公司的所有值的sum。

所以我尝试了这个:

foreach($data as $companies){
    $company = $companies['name'];
    $value = $companies['value'];
    if ($company == 'company1'){
        echo $value;
    }
} 

$data 是具有来自csv 值的数组

出于测试目的,我在if 语句中手动编写了公司名称,但这应该从$data-array 动态加载。

之后它应该计算所有值的sum。

我怎样才能做到这一点?

【问题讨论】:

  • 你需要所有公司的总和还是每个公司的总和??
  • 不属于该公司的值的总和

标签: php arrays csv


【解决方案1】:

您可以使用以下解决方案:

$arr_sum = [];

foreach ($data as $companies) {
    $company = $companies['name'];
    $value = $companies['value'];

   if (!isset($arr_sum[$company])) {
       $arr_sum[$company] = 0;
   }

   $arr_sum[$company] += $value;
}

演示: http://ideone.com/KXGCOd

【讨论】:

  • 老兄......就像一个魅力。谢谢!
【解决方案2】:

如果我能很好地理解您的问题,这应该可以。

$data = [
['name' => 'company1', 'value' => 123],
['name' => 'company1', 'value' => 65456],
['name' => 'company1', 'value' => 435],
['name' => 'company1', 'value' => 234235],
['name' => 'company2', 'value' => 65464],
['name' => 'company2', 'value' => 53543]
];
$result = 0;
foreach($data as $companies)
{
    $company = $companies['name'];
    $value = $companies['value'];
    if ($company == 'company1')
    {
        $result += $value;
    }
} 
echo $result;

但是! PHP 在计算方面不是很强大,尤其是 当嵌入循环时。如果你的公司每个都有几个不同的价值观,而且你也有几个公司,那很好。但是,如果您的文件包含数千个具有许多值的公司,那么您的脚本将非常有限(考虑增加/停用服务器超时)。我建议针对您的具体情况使用 python,它会更快、更容易且更重要:它会扩展:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多