我无法理解这一点
我有一个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
。
我该如何做到这一点?
答案 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;
}
答案 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来处理你的特定情况,它会更快,更容易,也更重要:它会扩展:)