Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP: Einfachste Addition klappt nicht

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

    PHP: Einfachste Addition klappt nicht

    Hallo,
    ich habe gerade ein sehr merkwürdiges Problem (betrifft nicht DF, ist nur eine technische Frage):
    PHP bekommt die einfachste Addition nicht hin.


    PHP-Code:
    $time_next "0";
    echo 
    "1: ".$time_next."<br />"// zeigt 0, korrekt

    $time_next $trigger['time_next'];
    echo 
    "2: ".$time_next."<br />"// zeigt 1579864500, korrekt

    $time_next $trigger['time_next']+‭1209600‬;
    echo 
    "3: ".$time_next."<br />"// zeigt 1579864500, also dasselbe wie bei 2. Müsste aber ‭1581074100 sein‬ 
    Wie Ihr seht, zeigt die Ausgabe 2 und 3 dieselbe Nummer... PHP ignoriert offenbar einfach, dass ich zu $time_next einfach mal 1209600‬ dazu zähle...
    Kennt jemand das Phänomen und weiß, wie es zu lösen ist?

    Ich habe es schon mit intval() ausprobiert, um sicherzustellen, dass der Typ korrekt ist - kein Erfolg.
    Auch $time_next += 1209600‬ hilft nicht weiter. PHP ignoriert das einfach.

    Ich habe schon geprüft, ob die Datei überhaupt hochgeladen wurde usw... das klappt alles. Änderungen im Text werden angezeigt und auch ein date() auf die Zahl klappt...
    Zuletzt geändert von umwelt; 24.01.2020, 11:35.

    #2
    ...habe weiter probiert...

    PHP-Code:
    <?php

    $trigger
    ['time_next'] = 12345;

    $add_seconds ‭1209600‬;

    $time_next $trigger['time_next']+$add_seconds;

    echo 
    $trigger['time_next']." + ".$add_seconds." = ".($trigger['time_next']+$add_seconds)."<br />";
    Liefert auf DF-Webspace genau das:

    Warning: Use of undefined constant ‭1209600‬ - assumed '‭1209600‬' (this will throw an Error in a future version of PHP) in /kunden/xxx/test/addition.php on line 5

    Warning: A non-numeric value encountered in /kunden/xxx/test/addition.php on line 7

    Warning: A non-numeric value encountered in /kunden/xxx/test/addition.php on line 9
    12345 + ‭1209600‬ = 12345
    PHP-Version: 7.2.19

    PHP meckert also über falsch deklarierte Variablen (seit wann muss man Ganzzahlen in Anführungszeichen setzen?) und liefert unten auch ein offensichtlich falsches Ergebnis...
    Ich muss da irgendeine relevante Neuerung in PHP übersehen haben...

    Habe auch schon geprüft, ob meine Text-Datei in UTF8 abgespeichert wird... alles in Ordnung.
    Zuletzt geändert von umwelt; 24.01.2020, 12:08.

    Kommentar


      #3
      mach mal vor $trigger['time_next'] ein (int), damit machst Du einen typecast . Ich denke PHP meint, dass Du einen String mit einer Zahl addieren möchtest....

      Also das dann sowas bei rauskommt:

      PHP-Code:
      echo $trigger['time_next']." + ".$add_seconds." = ".((int)$trigger['time_next']+(int)$add_seconds)."<br />"
      Zuletzt geändert von wecotec; 24.01.2020, 12:19.
      Markus
      ---
      https://www.facebook.com/markus.weber.180410

      Kommentar


        #4
        Hi, das typecasting hatte ich auch schon ausprobiert.

        PHP-Code:
        <?php

        echo "PHP-Version: ".PHP_VERSION."<br />";

        $trigger['time_next'] = 12345;

        $add_seconds ‭1209600‬;

        $time_next $trigger['time_next']+$add_seconds;

        #echo $trigger['time_next']." + ".$add_seconds." = ".($trigger['time_next']+$add_seconds)."<br />";

        echo $trigger['time_next']." + ".$add_seconds." = ".((int)$trigger['time_next']+(int)$add_seconds)."<br />";
        liefert mir:

        PHP-Version: 7.2.19

        Warning: Use of undefined constant ‭1209600‬ - assumed '‭1209600‬' (this will throw an Error in a future version of PHP) in /kunden/xxx/test/addition.php on line 7

        Warning: A non-numeric value encountered in /kunden/xxx/test/addition.php on line 9
        12345 + ‭1209600‬ = 12345
        Ich verstehe nicht recht, warum PHP die Zahl als Konstante verwendet... das war bisher nie der Fall.
        Zuletzt geändert von umwelt; 24.01.2020, 12:37.

        Kommentar


          #5
          Beim kopieren deines Codes ist mir aufgefallen, dass die 1209600 von nicht sichtbaren Zeichen eingeschlossen ist.
          Versuch mal alles vom = bis Semikolon zu löschen und die Zahl neu einzugeben.

          Kommentar


            #6
            vielen dank, daran lag es!
            Unglaublich. Ich glaube, die Zahl hatte ich aus dem Taschenrechner kopiert und dabei ist tatsächlich ein - komplett unsichtbares - Zeichen mitgenommen worden.
            OK, das erklärt es. Ist mir in den vergangenen Jahrzehnten noch nicht passiert
            Danke dir!
            Zuletzt geändert von umwelt; 24.01.2020, 15:12.

            Kommentar

            Lädt...
            X