php从循环

时间:2017-06-30 07:19:29

标签: php arrays csv

我无法理解这一点 我有一个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 - 数组动态加载。

在此之后,它应该计算所有值的sum

我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

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

$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

答案 1 :(得分:0)

如果我理解你的问题,这应该有用。

$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来处理你的特定情况,它会更快,更容易,也更重要:它会扩展:)