Prüfen ob Array nur leere Werte enthält

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Prüfen ob Array nur leere Werte enthält

    folgendes Beispiel funktioniert leider nicht. $_SESSION['loeschen'] ist ein Array. Leider wird der else-Teil auch dann nicht ausgeführt, wenn der Array nur lehre Werte enthält. Wer kann mir da weiterhelfen.

    if(count($_SESSION['loeschen']) > 0)
    {
    foreach($_SESSION['loeschen'] as $wert)
    {
    $sql = "DELETE FROM
    sprachen
    WHERE
    id = '".$wert."';";
    mysql_query($sql) OR die(mysql_error());
    }
    } else {
    header("Location: sprachen_loeschen.php?sign=errloe");
    exit;
    }

  • #2
    Hi,

    wenn Du nur die Elemente abarbeiten willst, die nichtleere Werte haben, dann filter das Array doch. Kannst Du z.B. mit (oh Wunder) array_filter machen
    Da Du in Deiner Schleife den aktuellen Wert auch gar nicht abprüfst, wäre das wohl am saubersten.
    count liefert Dir die Anzahl der Elemente im Array. Auch ein Element mit dem Wert "" oder 0 ist immer noch ein Element!

    LG

    Kommentar


    • #3
      ich habs mal so probiert geht aber auch nicht

      if(array_filter($_SESSION['loeschen']) == "")
      {
      header("Location: sprachen_loeschen.php?sign=errloe");
      exit;
      }

      Kommentar


      • #4
        Hallo?

        Würdest Du vielleicht erstmal nachschlagen, was diese Funktion überhaupt macht, welche Parameter sie erwartet und was sie zurückgibt?
        Und "funktioniert nicht", ist keine Fehlerbeschreibung, darauf gibts nur die Antwort: "Schade"

        Kommentar


        • #5
          tschuldigung

          So ich habe nochgeschlagen. Eigentlich müsste es ja danach funktionieren. Wenn alle Wert '' sind, dann müsste es gleich '' sein. Oder?<?php

          $entry = array(
          0 => 'foo',
          1 => false,
          2 => -1,
          3 => null,
          4 => ''
          );

          print_r(array_filter($entry));
          ?>

          Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

          Array
          (
          [0] => foo
          [2] => -1
          )

          Kommentar


          • #6
            So ich habe nochgeschlagen.
            Aber sehr schlampig
            Was gibt array_filter zurück? Einen String etwa?

            Kommentar


            • #7
              ok habs geblickt geht so nicht ok

              bastle mal an einer anderen lösung

              Kommentar


              • #8
                kannst du mir den nicht noch einen tipp geben...

                wie es funktionieren könnte

                Kommentar


                • #9
                  wurde doch schon gesagt. was willst du noch?

                  besser die query so gestalten: ... WHERE id IN (12, 23, 34, 45)
                  und nur ein mal ausführen - wesentlich schneller und sicherer.

                  Kommentar


                  • #10
                    Prüfe das Ergebnis von array_filter halt richtig ab. Jetzt streng Dich mal'n bischen an, Du bist doch nicht erst seit gestern dabei.

                    Kommentar


                    • #11
                      habs so gelöst

                      if(!array_filter($_SESSION['loeschen']))
                      {
                      header("Location: sprachen_loeschen.php?sign=errloe");
                      exit;
                      }

                      Kommentar


                      • #12
                        danke für die Hilfe

                        war nett von euch

                        Kommentar


                        • #13
                          das ist aber nicht korrekt - der rückgabewert ist kein boolean wert.
                          was willst du denn für eine semantische bedeutung umsetzen?

                          Kommentar


                          • #14
                            Original geschrieben von penizillin
                            das ist aber nicht korrekt - der rückgabewert ist kein boolean wert.
                            naund? - ein leeres array ergibt false.

                            Kommentar

                            Lädt...
                            X