MrOrangeSky: Arrays bearbeiten

Hallo & Guten Tag zusammen !
Ich fummel schon den ganzen Morgen an einer Möglichkeit herum um aus dem folgenden Array die Schlüssel die den Wert 0 haben zu löschen. Mein Array schaut folgendermaßen aus:

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

[item_id] => Array
        (
            [1] => 1000000000004
            [2] => 1000000000025
            [3] => 10000000000016
        )

[einzelpreis] => Array
        (
            [1] => 4.00
            [2] => 3.25
            [3] => 6.00
        )

[order] => Bestellen
)

Ich hätte es gerne so:

Array
(
    [anzahl] => Array
        (
            [1] => 1
        )

[item_id] => Array
        (
            [1] => 1000000000004
        )

[einzelpreis] => Array
        (
            [1] => 4.00
        )

[order] => Bestellen
)

Neben einigen diletantischen Versuchen habe ich es mit unset() versucht:

if ($_POST['anzahl']['$key'] == 0)
 foreach($_POST['anzahl'] as $key => $value)
 {
  unset($_POST['anzahl'][$key],$_POST['item_id'][$key],$_POST['einzelpreis'][$key]);
 }

Nur leider leert mir die Anweisung alle subarrays.
Was mache ich denn mal wieder falsch?

Ich bedanke mich schon mal für die Aufmerksamkeit !

Grüße
MrOrangeSky

  1. Dein Problem ist, daß du (bei der if) um $key noch Hochkommas hast. Die kannst du entweder komplett weglassen oder ersetze sie durch Gänsefüßchen ("). Hintergrund: Ein Variablenname in Hochkommas wird nicht ausgewertet, d.h. das PHP-Script versucht den Key '$key' zu finden und nicht '0' oder '1' (abgesehen davon, daß das eigentlich auc hfalsch wäre weil du numerische Keys hast und versuchst String-Keys zu überprüfen.
    Also lass einfach die Hochkommas weg und es sollte laufen (ungetestet)

    if ($_POST['anzahl']['$key'] == 0)
    foreach($_POST['anzahl'] as $key => $value)
    {
      unset($_POST['anzahl'][$key],$_POST['item_id'][$key],$_POST['einzelpreis'][$key]);
    }

    Viel Spaß.

    michael

    1. HuHu !
      Besten Dank für die rasche Antwort, nur leider ist das Ergebnis das gleiche...

      Grüße
      MrOrangeSky

      1. hi,

        Besten Dank für die rasche Antwort, nur leider ist das Ergebnis das gleiche...

        Code?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Besten Dank für die rasche Antwort, nur leider ist das Ergebnis das gleiche...

          Code?

          gruß,
          wahsaga

          Hallo & Guten Tag zusammen !
          Ich fummel schon den ganzen Morgen an einer Möglichkeit herum um aus dem folgenden Array die Schlüssel die den Wert 0 haben zu löschen. Mein Array schaut folgendermaßen aus:

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

          [item_id] => Array
                  (
                      [1] => 1000000000004
                      [2] => 1000000000025
                      [3] => 10000000000016
                  )

          [einzelpreis] => Array
                  (
                      [1] => 4.00
                      [2] => 3.25
                      [3] => 6.00
                  )

          [order] => Bestellen
          )

          Ich hätte es gerne so:

          Array
          (
              [anzahl] => Array
                  (
                      [1] => 1
                  )

          [item_id] => Array
                  (
                      [1] => 1000000000004
                  )

          [einzelpreis] => Array
                  (
                      [1] => 4.00
                  )

          [order] => Bestellen
          )

          Neben einigen diletantischen Versuchen habe ich es mit unset() versucht:

          if ($_POST['anzahl']['$key'] == 0)
           foreach($_POST['anzahl'] as $key => $value)
           {
            unset($_POST['anzahl'][$key],$_POST['item_id'][$key],$_POST['einzelpreis'][$key]);
           }

          Nur leider leert mir die Anweisung alle subarrays.
          Was mache ich denn mal wieder falsch?

          Ich bedanke mich schon mal für die Aufmerksamkeit !

          Grüße
          MrOrangeSky

          1. hi,

            Code?

            Ich wollte sehe, wie du Michaels Vorschlag umgesetzt hast.

            Hallo & Guten Tag zusammen !

            Nein, den ganzen Kram noch mal wollte ich nicht sehen, den sehe ich im ersten Posting.

            Ich bedanke mich schon mal für die Aufmerksamkeit !

            Und wir uns für deine intelligente Mitarbeit, die hoffentlich wenigstens ab jetzt anfangen wird.
            Den von Michael genannten logischen Fehler hast du nicht ausgebessert - na gut, es war ja wohl auch nur stumpfes Copy&Paste.

            Also, jetzt noch mal:

            Wie sieht dein aktueller Code an der betreffenden Stelle aus, in der du angeblich den Fehler ausgebessert hast, sich am Ergebnis aber nicht geändert haben soll?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Voilá:

              if ($_POST['anzahl'][$key] == 0)
               foreach($_POST['anzahl'] as $key => $value)
               {
                unset($_POST['anzahl'][$key],$_POST['item_id'][$key],$_POST['einzelpreis'][$key]);
               }

              Danke sehr!
              MrOrangeSky

              1. hi,

                if ($_POST['anzahl'][$key] == 0)

                Darum herum ist also noch eine Schleife?

                foreach($_POST['anzahl'] as $key => $value)
                {
                  unset($_POST['anzahl'][$key],$_POST['item_id'][$key],$_POST['einzelpreis'][$key]);

                Du willst nur die Elemente löschen, deren Anzahl 0 ist - hier machst du die Schleife aber über alle.

                Wie wär's mal andersherum?
                Schleife über alle, prüfen ob Anzahl gleich 0, dann (und nur dann) löschen ...

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Danke Dir, wahsaga!
                  Funzt!
                  Die Welt kann so einfach sein, wenn man sie nur mal von der anderen Seite betrachtet :)

                  Nochmals Danke!
                  MrOrangeSky