2012-04-05 13 views
0

昨日bigintsについて親切に答えられた質問をしました。しかし、私は奇妙な行動を観察しており、何が起こっているのか理解したいと思っています。MySql - bigints、php、auto string/intキャストフリップフロップ

私のPHPでは、私はそれを使用するjavascript Webクライアントプログラムに返す配列を持っています。 PHP私はそれがで使用する解凍JSで

sendBack = null; 
    sendBack[0]['TimeStamp'] = $Time; // A bigint got from a mysql table milliseconds from 1970 
    sendBack[0]['Text'] = $Message; // A varchar message got back from mysql 
    // I am guessing at this point you have worked out this is a text-chatroom thing going on 
    sendBack[1]['TimeStamp'] = 0; // A zero indicates an admin issue - note its an int but a small one 
    sendBack[1]['Text'] = $MessageAdmin; 

    // And I pack it up to send back 
    echo json_encode($sendBack); 

var json = eval('(' + data + ')'); 

問題はJS 0インデックスタイムスタンプは、文字列として扱われている、であるが、インデックス1タイムスタンプはintとして扱われています。

教育的な観点から、誰が何が起こっているのか知っていますか?

答えて

1

PHPを使用してデータベースから返される値は、常に文字列と考えられます。

整数値(ベース-10)に変換します
sendBack[0]['TimeStamp'] = parseInt($Time, 10); 

:あなたのゼロインデックスのタイムスタンプを変換するためにあなたのような何かをする必要があると思います。

もちろん、1インデックスのタイムスタンプはゼロとして直接設定されているため、それがintとして返される理由は明らかです。