0

我昨天问了一个关于 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 索引时间戳被视为字符串,但索引 1 时间戳被视为 int。

从教育的角度来看,有人知道发生了什么吗?

4

1 回答 1

1

我相信使用 PHP 从数据库返回的值始终是字符串。为了转换您的零索引时间戳,您需要执行以下操作:

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

这会将其转换为整数值(base-10)。

显然 1-index 时间戳被直接设置为零,因此它作为 int 返回的原因。

于 2012-04-05T10:32:05.270 回答