2016-06-20 9 views
0

Ich bin ein Multidimension-Array aus Daten, die mehrere Einträge hat aber einige Einträge haben den gleichen Wert;Mehrere gleiche Werte im Array und außerhalb verwenden

id  name  delivery# weight time 
-------------------------------------------- 
12  test  112233  45  now 
13  test  112234  456  now 
14  testA  112245  33  later 
15  testB  334421  334  later 
... 
... 

und foreach ID Ich schiebe zu Array wie so;

array_push($arraydata, array(
"id" => $id, 
"name" => $name, 
"delivery" => $delivery, 
"weight" => $weight, 
"time" => $time 
)); 

und später verwende ich es durchschleifen;

Grundsätzlich möchte ich überprüfen, wie oft der gleiche Name Wert erscheint und die Gewichtswerte zusammen für eine Summe hinzufügen.

Wie für jede "Lieferung" mit dem gleichen "Namen" teilen Sie das Liefergewicht durch das Gesamtgewicht von "Name" und erhalten den Prozentsatz, den ich für die Berechnung des Prozentsatzes der Gesamtkosten von "Name" verwenden werde. .

+0

Try Schlüssel verwenden => Wert in foreach-Schleife 'foreach ($ arraydata wie $ k => $ v) {' –

+1

Wo ist Ihre SQL-Abfrage? Veröffentlichen Sie auch den relevanten PHP-Code. –

+0

Eigentlich lese ich jede Zeile aus einer Excel-Tabelle .. und das Array wird richtig gerendert, nur tun müssen, was die Frage angegeben .. – BENN1TH

Antwort

2

Statt dass assoziatives Array array_push() zu schaffen, sollten Sie ein mehrdimensionales Array wie folgt erstellen,

$arraydata[$name][] = array('id' => $id, 'delivery' => $delivery, 'weight' => $weight, 'time' => $time); 

Und wie pro Ihre Frage,

Grundsätzlich möchte ich überprüfen, wie oft der gleiche Name Wert erscheint und die Gewichtswerte zusammen für eine Summe hinzufügen.

einfach eine foreach Schleife zu Schleife durch $arraydata Array verwenden und Anzeigeanzahl und insgesamt für jeden Namen assoziiert Gewicht, wie folgt aus:

foreach($arraydata as $key => $arraydataItem){ 
    // Display count and total weight associated for each name 
    echo $key . ": (count: " . count($arraydataItem) . ", total weight: " . array_sum(array_column($arraydataItem,'weight')) . ")<br />"; 
} 

Dies wird Leistung:

test: (count: 2, total weight: 501) 
testA: (count: 1, total weight: 33) 
testB: (count: 1, total weight: 334) 

Außerdem Sie können diesen Code optimieren, um Ihre weiteren Anforderungen zu erfüllen.


Hinweis: Wenn Sie die Struktur von $arraydata Array sehen möchten, tun var_dump($arraydata);

+0

Arbeitet wie geplant also +1, aber ich habe eine andere Lösung verwendet, um mein Gesamtergebnis zu erreichen. Vielen Dank. – BENN1TH

Verwandte Themen