Frage zu mktime

Gladiator6

Erfahrenes Mitglied
Hi

mktime(12, 00, 00, 02, 15, 2006); ergibt einen absoluten Timestamp. Das funktioniert natürlich mit einem beliebigen Datum.

Was aber nicht funktioniert:

$test="12, 00, 00, 02, 15, 2006";
mktime($test);

Weshalb nicht? Mir geht es nicht um eine Variable, ich möchte verschiedene Timestamps mit einem Datum aus einem Array erstellen.

mktime($test) liefert irgend einen Wert, der mit jeder Sekunde steigt, jedoch ist dieser Wert unabhängig vom eingestellten Datum! (das selbe wenn ich ein Array benütze)
 
Die mktime()-Funktion erwartet einen bis sieben Parameter des Datentype Integer. Diese lassen sich nicht einfach so durch eine Variable eines unbestimmten Datentyps – der Ausdruck 12, 00, 00, 02, 15, 2006 ergibt nämlich in diesem Zusammenhang keinen Sinn – ersetgen. Folgendes wäre jedoch möglich:
PHP:
eval('mktime('.$test.');');
Zu beachten sei jedoch, dass der Einsatz der eval()-Funktion Sicherheitsrisiken birgt.
 
Ich dachte mir fast, dass es damit zusammenhängt, dass der Typ einer Variable oder eines Arrays nicht klar definiert ist.

Ich versuche es mal nach deinem Muster. Kannst du vielleicht die Syntax noch etwas genauer beschreiben?
 
eval('mktime('.$test.');');

Warum ist hier "$test" innerhalb von einfachen Anführungszeichen und Punkt?
Ausserdem funktioniert das so nicht! Jetzt erhalte ich zwar kein Zahlenwert mehr, der sich erhöht. Es wird einfach gar nichts angezeigt!
 
Wie ich bereits sagt, ergibt deine Definition des $test-Variablewert keinen Sinn. Probier stattdessen mal Folgendes:
PHP:
<?php

	$test = '12, 00, 00, 02, 15, 2006';
	eval('mktime('.$test.');');  

?>
 
PHP:
<?php

$test='12, 00, 00, 02, 15, 2006';
$array_test[]=eval('mktime('.$test.');');
echo "$array_test[0]";
?>

Der Bildschirm bleibt leer.
 
Die eval()-Funktion führt nur den als Parameter übergebenen Code aus, gibt jedoch nicht dessen Ergebnis wieder. Probier mal Folgendes:
PHP:
<?php

	$test = '12, 00, 00, 02, 15, 2006';
	eval('$time = mktime('.$test.');');
	echo $time;

?>
Entsprechende Beispiele auf den Funktionsreferenzseiten klären solche Fragen nach der Verwendung einer Funktion oft ausreichend.
 
Deine Version funktioniert nun, meine Version mit einem Array leider noch nicht:

PHP:
$test='12, 00, 00, 02, 15, 2006';
eval($array_test[]='mktime('.$test.');');
echo "$array_test[0]";

Als Ausgabe kommt nachher:

mktime(12, 00, 00, 02, 15, 2006);
 
Zurück