suit: Mehrere mehrdimensionale Arrays summieren.

Hallo,

welches ist die einfachste oder vernünftigste Möglichkeit, mehrere mehrdimensionale Arrays (bzw. deren Werte) zu summieren (oder noch besser, Durchschnittswerte zu errechnen).

Spontanlösung wäre die arrays in einer Schleife durchzuarbeiten - die Fragen ist eben, ob das auch schöner geht.

Ausgangslage (nicht zwangsläufig nur zwei):

Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 5
                )

[1] => Array
                (
                    [0] => 3
                    [1] => 4
                )

)

Array
        (
            [0] => Array
                (
                    [0] => 5
                    [1] => 5
                )

[1] => Array
                (
                    [0] => 3
                    [1] => 1
                )

)

Wunschergebnis (Summe):

Array
        (
            [0] => Array
                (
                    [0] => 6
                    [1] => 10
                )

[1] => Array
                (
                    [0] => 6
                    [1] => 5
                )

)

Wunschergebnis (Schnitt):

Array
        (
            [0] => Array
                (
                    [0] => 3
                    [1] => 5
                )

[1] => Array
                (
                    [0] => 3
                    [1] => 2.5
                )

)

  1. Hi,

    welches ist die einfachste oder vernünftigste Möglichkeit, mehrere mehrdimensionale Arrays (bzw. deren Werte) zu summieren (oder noch besser,

    Durchschnittswerte zu errechnen).

    array_sum/count für die einzelnen Unter-Ebenen.

    Spontanlösung wäre die arrays in einer Schleife durchzuarbeiten - die Fragen ist eben, ob das auch schöner geht.

    Wenn dir Schleifen nicht behagen, kannst du dir vielleicht auch was mit array_filter o.ä. basteln.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Wenn dir Schleifen nicht behagen, kannst du dir vielleicht auch was mit array_filter o.ä. basteln.

      Nein - sie behagen mir - ich dachte nur, es könnte ggf. eine Funktion (oder einen Operator) hierfür geben, den ich noch nicht kenne :)

      Wurde jedenfalls jetzt mit einer Schleife gelöst.

      1. @@suit:

        nuqneH

        Nein - sie behagen mir - ich dachte nur, es könnte ggf. eine Funktion (oder einen Operator) hierfür geben, den ich noch nicht kenne :)

        In Programmiersprachen, die Matritzen und deren Addition implementiert haben, ja.

        Vielleicht gibt es auch eine PHP-Erweiterung dafür?

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Vielleicht gibt es auch eine PHP-Erweiterung dafür?

          Für so ein triviales Problem - welches nebenbei schon gelöst ist - wäre es der Overkill eine Erweiterung zu installieren :)

      2. Nein - sie behagen mir - ich dachte nur, es könnte ggf. eine Funktion (oder einen Operator) hierfür geben, den ich noch nicht kenne :)

        Wie oben bereits skizziert:

          
        function addRecursive($p1, $p2) {  
        	if (is_array($p1)) return array_map("addRecursive", $p1, $p2);  
        	return $p1 + $p2;  
        }  
          
        $array = addRecursive($array1, $array2);  
        
        

        liefert das Gewunschte (im Fall von genau zwei Arrays und der Summe - und Achtung: GIGO). Natuerlich leicht anpassbar fuer mehrere Arrays und Durchschnitt statt Summe. Wenn Du den Ansatz jetzt immer noch ignorieren und Deine Schleifen machen willst, dann halte ich mich ab jetzt raus, versprochen ;-)

        Viele Gruesse,
        der Bademeister

        1. Wenn Du den Ansatz jetzt immer noch ignorieren und Deine Schleifen machen willst, dann halte ich mich ab jetzt raus, versprochen ;-)

          Ich ignoriere ihn nicht, ich behalte ihn im Hinterkopf ;) nur das Problem ist wie bereits erwähnt bereits gelöst bzw. die Lösung erfüllt ihren Zweck ;)

          Dennoch danke ich dir für deine Information.

  2. Hi suit.

    welches ist die einfachste oder vernünftigste Möglichkeit, mehrere mehrdimensionale Arrays (bzw. deren Werte) zu summieren (oder noch besser, Durchschnittswerte zu errechnen).

    Du kannst array_map parallel ueber mehrere Arrays laufen lassen (siehe obiger Link, Beispiel #3). Dazu eine rekursive Callback-Funktion (d.h., die array_map wieder mit sich selbst als callback aufruft, falls sie auf Arrays trifft), ist Dein Freund.

    Viele Gruesse,
    der Bademeister