Ankündigung

Einklappen
Keine Ankündigung bisher.

Variablentyp in while-Schleife unterscheiden

Einklappen

Neue Werbung 2019

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

  • Variablentyp in while-Schleife unterscheiden

    Hallo zusammen,

    ich will aus einem Array, das aus einem HTML-Formular hervorgeht, eine Variable $msg für eine E-Mail machen.

    Mein bisheriger Code lautet:
    $ignore = array('submit');

    $msg = "";

    while (list($name,$value) = each($_POST)) {
    if (in_array($name, $ignore)) {
    continue;
    }
    $msg .= "$name: $value\n";
    }
    Nun sind um Array sowohl Strings als auch sehr viele Int-Variablen. In $msg sollen alle Strings, aber nur die Int's aufgenommen werden, deren Wert >0 ist. Sonst wird die Aufzählung in der Mail zu lang und unübersichtlich.

    Ich habe mit is_string ohne Erfolg experimentiert:

    $ignore = array('submit');

    $msg = "";

    while (list($name,$value) = each($_POST)) {
    if (in_array($name, $ignore)) {
    continue;
    }

    if ((!is_string($name) && $value > 0) || is_string($name)) {
    $msg .= "$name: $value\n";
    }
    }
    Bitte um einen Rat und danke im Voraus.
    Helmut

  • #2
    Ich würde alle Felder, welche ich auswerten will, auslesen und dann validieren.
    grundlegendes dazu hier:
    https://php-de.github.io/#form

    Kommentar


    • #3
      Im $_POST-Array gibt es keine Integer-Variablen, nur Strings und Arrays.

      Kommentar


      • #4
        Wert >0

        Das kannst du mit empty prüfen.

        Kommentar


        • #5
          Danke allen!
          Ich habe auf die Schleife verzichtet, einzeln ausgelesen und von Fall zu Fall entschieden. War bei 23 Variablen etwas umständlich Ich war überzeugt, dass auch in die Schleife eine Entscheidung eingebaut werden kann, ob der ausgelesene Wert numerisch oder alphanumerisch ist. In den Eingabefeldern hatte ich type "text" und type="number" unterschieden.
          Gruß Helmut

          Kommentar


          • #6
            Zitat von helmut.em Beitrag anzeigen
            Danke allen!
            Ich habe auf die Schleife verzichtet, einzeln ausgelesen und von Fall zu Fall entschieden. War bei 23 Variablen etwas umständlich Ich war überzeugt, dass auch in die Schleife eine Entscheidung eingebaut werden kann, ob der ausgelesene Wert numerisch oder alphanumerisch ist. In den Eingabefeldern hatte ich type "text" und type="number" unterschieden.
            Gruß Helmut
            Wie Du es machen willst, eine Schleife wäre auch möglich gewesen.
            type="number" bedient ein buildInvalidator, übetragen werden strings.

            Als numerisch gedachte Werte lohnt es zu casten
            PHP-Code:
            $foo = (int)$foo
            bevor sie valuidiert werden.

            Kommentar

            Lädt...
            X