Nicole: Problem mit if 0 / isset usw...

Hallo erst mal ;-),
Das folgende Problem hatte ich schon öfter
und in vielen Variationen.

Also ich übergebe einen Wert als String:
$x = "123";

Dann überprüfe ich mit:
if($x){ echo "TYP: x= ".gettype($x);}

// Ausgabe = TYP: x= string

Soweit so gut, aber wenn $x="0";
dann ist die IF Bedigung nicht erfüllt und
es geht nicht weiter.

Natürlich kann ich auch mit ISSET fragen:
if(isset($x){echo "TYP: x= ".gettype($x);}

Dann geht es zwar auch wenn eine Null übergeben wird,
leider aber auch dann wenn die variable leer ist( $x="";).

Klar ich könnte mit diversen if's Kontrollmechanismen das
weiter eingrenzen, aber in einem langen script
dass immer wieder nach if($x)... fragt, ist das nicht
nur nervig, sondern erhöht sich das Fehlerrisiko dadurch.

Jetzt wolllte ich wissen ob ich vielleicht einen Denkfehler habe
und es vielleicht eine ganz einfache Lösung dafür gibt ?

Gruss Nikki

  1. Hallo Nikki,

    Soweit so gut, aber wenn $x="0";

    Versuch mal $x = '0'; oder $x = '\0'; oder $x = "\0";

    1. Hallo Rene,

      Soweit so gut, aber wenn $x="0";
      Versuch mal $x = '0'; oder $x = '\0'; oder $x = "\0";

      Wozu soll dass gut sein ?

      1. Variable wird im Link übergeben also standard
      schon mal "STRING".

      2. Sicherheitshalber konvertiere ich sogar am
      Anfang vom ZielScript nochmal um:
      $x=(string)$x;

      Gruss Nikki

      1. Hi Nikki,

        Soweit so gut, aber wenn $x="0";
        Versuch mal $x = '0'; oder $x = '\0'; oder $x = "\0";

        Wozu soll dass gut sein ?

        Hast du es wenigstens mal ausprobiert das $x = ... direkt in das PHP-Script zuschreiben ohne das jetzt per GET zu übergeben?

        Gruß
        René

        1. Hallo Rene,

          Soweit so gut, aber wenn $x="0";
          Versuch mal $x = '0'; oder $x = '\0'; oder $x = "\0";

          Wozu soll dass gut sein ?
          Hast du es wenigstens mal ausprobiert das $x = ... direkt in das PHP-Script zuschreiben ohne das jetzt per GET zu übergeben?

          »»

          Natürlich !!!!

          Gruss Nikki

          1. Hallo Nikki,

            Natürlich !!!!

            hat eine Möglichkeit davon funktioniert?

            1. Lieber Rene,

              Natürlich !!!!
              hat eine Möglichkeit davon funktioniert?

              probiers doch mal aus:

              <?PHP
              $x = "0";

              // Das klappt nicht:
              if($x){echo "Nr. 1 --- x ist vorhanden = ".gettype($x);}

              // Das klappt, aber leider auch wenn $x=""; also leer ist
              if(isset($x)){echo "Nr. 2 --- x ist vorhanden = ".gettype($x);}

              ?>

              Versuche doch mal so, dass Nr. 1 klappt.

              Gruss Nikki

              1. hi Nikki,

                ----------
                <?PHP
                $x = '\0';

                // Das klappt nicht:
                if($x){echo "Nr. 1 --- x ist vorhanden = ".gettype($x);}

                // Das klappt, aber leider auch wenn $x=""; also leer ist
                if(isset($x)){echo "Nr. 2 --- x ist vorhanden = ".gettype($x);}

                ?>
                ----------

                Ausgabe:

                ----------
                Nr. 1 --- x ist vorhanden = string
                Nr. 2 --- x ist vorhanden = string
                ----------

  2. Hallo Nikki,

    Jetzt wolllte ich wissen ob ich vielleicht einen Denkfehler habe
    und es vielleicht eine ganz einfache Lösung dafür gibt ?

    ich vermute, Du suchst: http://www.php.net/manual/de/function.empty.php ;)

    Gruß, Thoralf

    --
    Sic Luceat Lux!
  3. Hallo Nikki,

    Soweit so gut, aber wenn $x="0";
    dann ist die IF Bedigung nicht erfüllt und
    es geht nicht weiter.

    klar - der String "0" wird als false angesehen: http://www.php.net/manual/de/language.types.boolean.php#language.types.boolean.casting

    Dann geht es zwar auch wenn eine Null übergeben wird,
    leider aber auch dann wenn die variable leer ist( $x="";).

    wie Thoralf schon schrieb - nimm empty()

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|