2012-04-05 29 views
0

我問了一個關於bigints的問題,昨天很好地回答了。但是,我一直在觀察一些奇怪的行爲,並想知道發生了什麼。MySql - bigints,php和自動字符串/ int投擲flip-flopping

在我的PHP我有一個數組,我發回到一個JavaScript Web客戶端程序使用它。

在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索引時間戳被當作字符串,但在索引1時間戳正在被視爲一個int。

從教育的角度來看,有誰知道發生了什麼事?

回答

1

我相信從PHP數據庫返回的值始終是字符串。爲了轉換您的零指數戳你需要做這樣的事情:

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

,將其轉換爲整數值(基數爲10)。

顯然,1索引時間戳被直接設置爲零,因此它作爲int返回的原因。