Hazel: array_filter oder andere Möglichkeit

Nabend zusammen, ich habe ein Formular, in dem man etliche Artikel auswählen kann. Die Artikel kommen aus der DB und ich habe die input Anzahl-Felder nach dem Schema article[ID] vergeben. So weit so gut. Das Array kommt auch perfekt an, allerdings möchte ich, für den Fall, das kein Artikel ausgewählt wird, bzw. bei keinem Artikel die Anzahl höher 0 ist, eine Fehlermeldung ausgeben. Nun dachte ich, ich könnte das array mit array_filter() "bearbeiten", so dass ich bei 0 artikeln ein leeres array bekomme und darauf reagieren kann. Das array wird allerdings mit array(0) zurückgeliefert und egal welche Prüfung ich anwende, if(empty($article)){} oder if($article){}

oder viele andere Versuche, das array nicht als false anerkannt wird, was ja auch klar ist, da es ja auch wirklich nicht leer ist.

gibt es eine Funktion, ohne einen rekursiven Durchlauf einer Schleife, das ganze einfach hinzubekommen.

Entschuldigt meine schwer verständliche Erklärung, aber ich bin nach Stunden des testens echt durch.

Wünsche Euch ein schönes, erholsames Wochenende und danke Euch im vorraus

  1. Hallo Hazel,

    gibt es eine Funktion, ohne einen rekursiven Durchlauf einer Schleife, das ganze einfach hinzubekommen.

    Du könntest die DB-Ausgabe bereits abfangen oder die Anzahl im Array zählen, zb.

    
    if(count($article) >=1){echo 'Werte vorhanden';}
    
    

    aber wie gesagt, ich würde die DB Auswertung nutzen.

    Gruss
    Henry

  2. Tach!

    Das array wird allerdings mit array(0) zurückgeliefert und egal welche Prüfung ich anwende, if(empty($article)){} oder if($article){}

    oder viele andere Versuche, das array nicht als false anerkannt wird, was ja auch klar ist, da es ja auch wirklich nicht leer ist.

    Dann machst du irgendwas verkehrt, denn ein leeres Array wird von PHP als false behandelt.

    dedlfix.

    1. Tach!

      Dann machst du irgendwas verkehrt, denn ein leeres Array wird von PHP als false behandelt.

      Beispiel dazu:

      $a = [0,0,0];
      var_dump($a);
      var_dump(empty($a));
      
      $a = array_filter($a);
      var_dump($a);
      var_dump(empty($a));
      

      Ausgabe:

      array(3) {
        [0]=>
        int(0)
        [1]=>
        int(0)
        [2]=>
        int(0)
      }
      bool(false)
      
      array(0) {
      }
      bool(true)
      

      dedlfix.

  3. Hallo Hazel,

    erwartest Du möglicherweise, dass array_filter das übergebene Array verändert? Das tut es nicht, das gefilterte Array bekommst Du als neues Array zurück.

    Rolf

    --
    sumpsi - posui - clusi