昨天我问了一个关于bigints的问题,这是一个很好的回答。但是,我一直在观察一些奇怪的行为,并想了解发生了什么。
在我的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索引TimeStamp被视为字符串,但索引1时间戳被视为int。
从教育的角度来看,有谁知道发生了什么事?
答案 0 :(得分:1)
我相信从PHP数据库返回的值总是字符串。要转换零索引时间戳,您需要执行以下操作:
sendBack[0]['TimeStamp'] = parseInt($Time, 10);
将其转换为整数值(base-10)。
显然,1索引时间戳被直接设置为零,因此它作为int返回的原因。