PaSt: array gruppieren und zusammenzählen

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

  1. 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ß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt
    1. 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.

    2. 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

      1. 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ß,

        frankx

        --
        tryin to multitain  - Globus = Planet != Welt
        1. 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.