array gruppieren und zusammenzählen
PaSt
- php
hi leute
ich steh wiedermal am berg und seh den wald vor lauter bäumen nicht mehr.
Ich habe ein verschachteltes array wie folgendes:
array(6) {
[0]=>
array(2) {
["Name"]=>
string(6) "Patrik"
["Punkte"]=>
int(0)
}
[1]=>
array(2) {
["Name"]=>
string(4) "Anne"
["Punkte"]=>
int(1)
}
[2]=>
array(2) {
["Name"]=>
string(3) "Tim"
["Punkte"]=>
int(1)
}
[3]=>
array(2) {
["Name"]=>
string(4) "Anne"
["Punkte"]=>
int(0)
}
[4]=>
array(2) {
["Name"]=>
string(6) "Patrik"
["Punkte"]=>
int(2)
}
}
die anzahl unterarray's ist variabel.
nun möchte ich die Summe der Punkte aller unterarray's mit gleichen Namen, am liebsten in einem array oder einfach in der htmlausgabe.
so in etwa sollte das array aussehen:
array(3) {
[0]=>
array(2) {
["Name"]=>
string(6) "Patrik"
["Punkte"]=>
int(2)
}
[1]=>
array(2) {
["Name"]=>
string(4) "Anne"
["Punkte"]=>
int(1)
}
[2]=>
array(2) {
["Name"]=>
string(3) "Tim"
["Punkte"]=>
int(1)
}
}
mit welcher funktion oder mit welcher kombination von funtkionen geht das am besten?
cu
Hellihello
foreach ($single_ratings as $single_rate) {
$persons[$single_rate["Name"]=0;
}
foreach ($single_ratings as $single_rate) {
if(in_array($single_rate["Name"],$persons) {
$persons[$single_rate["Name"]+=$single_rate["Punkte"];
}
}
ungetestet.
Dank und Gruß,
Hellihello
nabend
foreach ($single_ratings as $single_rate) {
$persons[$single_rate["Name"]=0;
}foreach ($single_ratings as $single_rate) {
if(in_array($single_rate["Name"],$persons) {
$persons[$single_rate["Name"]+=$single_rate["Punkte"];
}
}ungetestet.
ein paar klammern musste ich noch anpassen (wir sind hier ja bei SELF) aber sonst siehts sehr gut aus.
Dank und Gruß,
der dank gehört dir.
noch nen schönen abend.
Hellihello
nabend
foreach ($single_ratings as $single_rate) {
$persons[$single_rate["Name"]=0;
}foreach ($single_ratings as $single_rate) {
if(in_array($single_rate["Name"],$persons) {
$persons[$single_rate["Name"]+=$single_rate["Punkte"];
}
}ungetestet.
scheint wohl doch nicht zu funktionieren.
wenn ich das array erweitere bekomme ich das selbe ergebnis.
cu
Hellihello
<?php
// create test array
$single_ratings[0]["Name"] = "Hans1";
$single_ratings[0]["Punkte"] = "1";
$single_ratings[1]["Name"] = "Hans1";
$single_ratings[1]["Punkte"] = "1";
$single_ratings[2]["Name"] = "Hans2";
$single_ratings[2]["Punkte"] = "1";
$single_ratings[3]["Name"] = "Hans2";
$single_ratings[3]["Punkte"] = "1";
//create assoc array with playername as key
foreach ($single_ratings as $single_rate) {
$persons[$single_rate["Name"]]=0;
}
//add each single rating to player"account"
foreach ($single_ratings as $single_rate) {
// does key exists in persons assoc array?
if(isset($persons[$single_rate["Name"]])) {
$persons[$single_rate["Name"]] += $single_rate["Punkte"];
}
}
//test result - expects to persons with two points
var_dump($persons);
?>
sorry, hab ich selfst gemacht.
Dank und Gruß,
Hellihello
nabend
//create assoc array with playername as key
foreach ($single_ratings as $single_rate) {
$persons[$single_rate["Name"]]=0;
}//add each single rating to player"account"
foreach ($single_ratings as $single_rate) {
// does key exists in persons assoc array?
if(isset($persons[$single_rate["Name"]])) {
das wars wohl isset satt in_array.
$persons[$single_rate["Name"]] += $single_rate["Punkte"];
}
}
sorry, hab ich selfst gemacht.
kein problem. werde es veruchen nachzuvollziehen ;-)
Dank und Gruß,
besten dank jetzt klappts.
schönen abend.