2017-06-30 4 views
2

Ich kann nicht meinen Kopf herumkommen.
Ich habe eine csv -Datei mit Firmennamen und einem bestimmten Wert.PHP berechnet Werte aus einer Schleife

Ich führe ein Skript, das den Firmennamen und Wert aus der csv erhalten.
Ein Unternehmen kann mehrere Werte enthalten. Hier ist, wie es

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

Was will ich jeden Wert von jedem einzelnen Unternehmen zu tun bekommen und die sum aller Werte aus diesem bestimmten Unternehmen zu berechnen.

So habe ich versucht, dies:

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

$data ist das Array mit Werten aus den csv

Für Testzwecke ich manuell einen Firmennamen in der if Erklärung geschrieben, aber diese dynamisch geladen werden sollen das $data -array.

Danach sollte es die sum aller Werte berechnen.

Wie kann ich das erreichen?

+0

Sie brauchen alle Unternehmen Summe oder Summe jeder Firma? –

+0

Nein die Summe der Werte gehören zu dieser Firma – Interactive

Antwort

3

können Sie die folgende Lösung verwenden:

$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; 
} 

Demo:http://ideone.com/KXGCOd

+0

Dude ... Wie ein Charme. Vielen Dank! – Interactive

0

wenn ich Ihre Frage verstehen gut, das sollte funktionieren.

$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; 

JEDOCH! PHP ist nicht sehr leistungsfähig, wenn es um Berechnungen geht, insbesondere , wenn es in eine Schleife eingebettet ist. Wenn Ihre Unternehmen ein paar verschiedene Werte haben und Sie auch ein paar Firmen haben, dann ist das in Ordnung. Wenn Ihre Datei jedoch Tausende von Unternehmen mit vielen Werten enthält, ist Ihr Skript sehr eingeschränkt (denken Sie daran, das Server-Timeout zu erhöhen/zu deaktivieren). Ich würde empfehlen, Python für Ihren speziellen Fall zu verwenden, wäre es viel schneller, einfacher und wichtiger: es wird skalieren :)

Verwandte Themen