2009-04-17 4 views
2

Ich benutze die Flot-Grafikbibliothek für jQuery, und es verwendet Javascript-Zeit für jede Zeitreihe (zur Erinnerung, das sind Millisekunden seit Jan 1970. Unix-Zeit ist Sekunden).Unix-Zeitstempel und JavaScript-Zeit; zu groß!

Meine aktuellen Code sieht wie folgt aus:

foreach($decoded['results'] as $currentResult) { 
     if($currentResult['from_user'] == $user) { 
      $strippedTexts = $currentResult['created_at']; 
      $dates []= strtotime($strippedTexts); 
     } 
    } 

Das gibt mir eine Reihe von Unix-Zeitstempel. Ich möchte die Daten für JavaScript in der Schleife prep, aber wenn ich

$dates []= 1000*strtotime($strippedTexts); 

versuchen die Zahl ist zu groß, und es spuckt „[-2147483648]“. Muss ich den "Typ" der Variablen, die im Array gehalten werden darf, auf bignum oder etwas ändern?

Danke!

+0

Duplizieren von unten Kommentar, so erhalten Sie eine Antwortbenachrichtigung: Wie erhalten Sie die Variablen auf das Javascript? JavaScript kann PHP-Variablen nicht lesen, daher müssen Sie es irgendwie weitergeben. Es sollte sich nicht interessieren, ob es zu diesem Zeitpunkt eine Zeichenfolge oder eine Zahl ist. Wenn Sie zeigen können, wie Sie das $ dates-Array tatsächlich verwenden, kann ich mir das ansehen. –

+0

(nicht an meinem Arbeitscomputer), aber ich drucke das Array grob wie folgt aus: var data = , aber tatsächlich rufen Sie die Variable w/im Skript-Tag mit der Funktion flot library auf. Das volle Programm ist bei: http://www.phpfreaks.com/forums/index.php/topic.248668.0.html Danke! –

Antwort

2

können Sie versuchen, die BCMath Arbitrary Precision functions verwenden, wenn Sie sie zur Verfügung haben:

$dates[] = bcmul("1000", strtotime($strippedTexts)); 

Oder einfach, wissen Sie, hängen drei Nullen am Ende.

In beiden Fällen wird der Wert als Zeichenfolge gespeichert, aber das sollte für Ihre Verwendung nicht wichtig sein.

+0

Ich habe versucht: $ strippedTexts = $ currentResult ['created_at']; \t \t $ bigstring = strtotime ($ stripedTexts). '000'; \t \t \t \t $ dates [] = Settyp ($ bigstring, "float"); Und es produziert eine Reihe von allen "1" s. Leider benötigt die JavaScript-Bibliothek, die ich verwende, die Ergebnisse als eine Zahl, keine Zeichenfolge. Irgendwelche anderen Gedanken? –

+0

Wie erhalten Sie die Variablen auf das Javascript? JavaScript kann PHP-Variablen nicht lesen, daher müssen Sie es irgendwie weitergeben. Es sollte sich nicht interessieren, ob es zu diesem Zeitpunkt eine Zeichenfolge oder eine Zahl ist. Wenn Sie zeigen können, wie Sie das $ dates-Array tatsächlich verwenden, kann ich mir das ansehen. –

3

Versuchen Sie folgendes:

$dates []= 1000.0*strtotime($strippedTexts); 

, dass es in float verwandeln, die in PHP eine größere Zahl als ein int speichern kann.

+0

Hat jedes Element eines Arrays dann einen eigenen Variablentyp? –

+0

PHP ist lose getippt. Ich denke du kannst jeden Typ in einem Array mischen. –

+0

Ich bin endlich wieder bei meiner Testmaschine; Dies führt immer noch dazu, dass eine große negative Zahl mit einem Balken versehen wird, und dann hält das Array an. Grob, barf! –

0

Es ist keine Lösung erforderlich, da es kein Problem gibt: Lassen Sie JavaScript die Multiplikation durchführen.