0

昨日bigintsについて質問しましたが、親切に答えてくれました。しかし、私はいくつかの奇妙な行動を観察していて、何が起こっているのかを理解したいと思います。

私のphpには、それを使用するjavascriptWebクライアントプログラムに送り返す配列があります。

PHPで

    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);

jsで私はそれを開梱して一緒に使用します:

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

問題は、jsの0インデックスTimeStampが文字列として扱われているのに、インデックス1Timestampがintとして扱われていることです。

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

4

1 に答える 1

1

PHPを使用してデータベースから返される値は常に文字列であると思います。ゼロインデックスタイムスタンプを変換するには、次のような操作を行う必要があります。

sendBack[0]['TimeStamp'] = parseInt($Time, 10);

これは整数値(基数10)に変換します。

明らかに、1インデックスのタイムスタンプは直接ゼロに設定されているため、intとして返されます。

于 2012-04-05T10:32:05.270 に答える