wayann: Warum funktionert strtotime("$var") nicht ?

Das funktioniert:

date1=strtotime("01:01 24 Oct 2007"); //Ausgabe 1193180460

Das funktioniert NICHT:

$hour1='01';
$minute1='01';
$day1='24';
$month1='Oct';
$year1='2007';
$time1="$hour1".':'."$minute1".' '."$day1".' '."$month1".' '."$year1";
$date1=strtotime("$time1");
echo $date1; // keine Ausgabe  $date1=''

Kann jemand mir sagen, warum? Wie kann man Var als Parameter
der Fkt strtotime() übergeben?

Vielen Dank!

  1. Hello,

    Das funktioniert:

    date1=strtotime("01:01 24 Oct 2007"); //Ausgabe 1193180460

    Das funktioniert NICHT:

    $hour1='01';
    $minute1='01';
    $day1='24';
    $month1='Oct';
    $year1='2007';
    $time1="$hour1".':'."$minute1".' '."$day1".' '."$month1".' '."$year1";

    echo "<p>$time</p>\n";

    Was steht denn drin in $time?

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

  2. Moin!

    Das funktioniert:

    date1=strtotime("01:01 24 Oct 2007"); //Ausgabe 1193180460

    Das funktioniert NICHT:

    $hour1='01';
    $minute1='01';
    $day1='24';
    $month1='Oct';
    $year1='2007';
    $time1="$hour1".':'."$minute1".' '."$day1".' '."$month1".' '."$year1";
    $date1=strtotime("$time1");
    echo $date1; // keine Ausgabe  $date1=''

    Warum setzt du Variablen in doppelte Anführungszeichen? Was soll das bringen, außer mehr Rechenaufwand?

    Wenn du schon das Feature "Variablen in doppelten Anführungszeichen werden evaluiert" nutzen willst, dann doch bitteschön richtig:

      
    $time1="$hour1:$minute1 $day1 $month1 $year1";  
    $date1=strtotime($time1);  
    
    

    Kann jemand mir sagen, warum? Wie kann man Var als Parameter
    der Fkt strtotime() übergeben?

    Jedenfalls ohne die sinnlosen doppelten Anführungszeichen.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hallo,

      entschuldigung ! Mein Beispiel war falsch !

      Das funktioniert NICHT:

      $hour1='01';
      $minute1='01';
      $day1='24';
      $month1='Oct';
      $year1='2007';
      $time1="$hour1".':'."$minute1".' '."$day1".' '."$month1".'

      statt

      $hour1='01';
      $minute1='01';

      soll
      $hour1='';
      $minute1='';
      sein!

      Das Problem liegt nämlich an "$hour1".':'."$minute1",
      wenn $hour1=''; und $minute1=''; Das String ist ':', das kann strtotime() nicht bearbeiten.

      Danke für die Antwort, jetzt lasse ich die Variablen ohne "" !

      Eine Frage noch:  $_GET["vorname"], das "" hier ist auch nicht effizient? Es sollen nur $_GET[vorname] oder $_GET[vorname] sein?

      1. Hello,

        Eine Frage noch:  $_GET["vorname"], das "" hier ist auch nicht effizient? Es sollen nur $_GET[vorname] oder $_GET[vorname] sein?

        Nein, man könnte alternativ $_GET['vorname'] benutzen.
        Aber Häkchen ( ' oder " ) müssen sein, wenn man nicht Gefahr laufen will, dass vorname als Konstante interpretiert wird.

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      2. Hallo wayann,

        Eine Frage noch:  $_GET["vorname"], das "" hier ist auch nicht effizient? Es sollen nur $_GET[vorname] oder $_GET[vorname] sein?

        Nein, "vorname" ist ein String, der gehört also in Anführungszeichen. (Du solltest hier besser einfache nehmen, Variablen sind ja eh nicht im String). $day1 ist eine Variable, die gehört nicht in Anführungszeichen. Du kannst zwar so Konstrukte basteln wie »echo "Hallo $vorname";«, aber das ist nicht so wirklich performant und auch kein super Programmierstil. besser wäre »echo 'Hallo ' . $vorname;«. Dein Script enthält Variante 1 und dann auch noch mit nur der Variable in Anführungszeichen, was nicht nur schlechter Stil, sondern einfach Quatsch ist.

        Jonathan

        1. echo $begrüßung;

          Du kannst zwar so Konstrukte basteln wie »echo "Hallo $vorname";«, aber das ist nicht so wirklich performant und auch kein super Programmierstil.

          Die Performanceverlust ist dermaßen minimal, dass er praktisch nicht ins Gewicht fällt. Wenn ein Server unter Performance-Problemen leidet, bekommst du mit der Optimierung an solch einer Stelle keine relevanten Leistungsreserven frei.
          Deiner generelle Aussage, dass dies kein guter Stil sein, kann ich nicht zustimmen. Es gibt dazu auch keine allgemeinen Festlegungen (z.B. ein von PHP herausgegebener Styleguide), also sehe ich das maximal unter persönlicher Vorliebe einsortiert.

          besser wäre »echo 'Hallo ' . $vorname;«.

          Nur um mal ein bisschen Krümel zu kacken: Du hast einen String und eine Variable. Du erzeugst nun mit dem .-Operator einen neuen String, der dann ausgegeben wird. Wenn du die Teilstrings durch Komma getrennt als Parameter an echo weitergibst entfällt der Zwischenschritt mit dem temporär erzeugten String.

          echo 'Hallo ', $vorname;

          Aber auch hier dürfte der Performanceverlust/-gewinn in einer unbedeutender Größenordnung liegen.

          echo "$verabschiedung $name";