【发布时间】:2014-03-07 11:29:11
【问题描述】:
让我先解释一下情况:
我有一个 MySql 表,其中包含几列,其中一个用户 ID、一个比赛 ID、一个单圈时间、一个单圈数,我想将此信息放入 PHP 中的一个数组中,然后将其发送到 java脚本。
我的 JavaScript 数组最终应该是这样的:
第一行:
[laptime1 user1, laptime2 user1, laptime3 user1,...]
第二行:
[laptime1 user2, laptime2 user2, laptime3 user2,...]
这是我目前的情况:
我首先尝试为单个用户测试这种情况并遇到了很多问题,因为我在 MySql 中的单圈时间是浮动的,当使用 json_encode 时,它会将所有内容都转换为字符串,这对我的 javascript 不起作用,因为它开始输出错误的价值观。
例如:
第一个值是“8”而不是“84,521”,然后第二个值是“4”,等等......)......
遗憾的是,我找到了一个带有数字检查选项的潜在解决方案,但无法使用它,因为我的主机运行的 PHP 版本不支持它。
所以我找到了以下解决方案,我稍微摆弄了一下,它适用于单个用户(对你来说它可能看起来很乱,我真的是一个初学者并且超出了我的体重,但它有效):
$query = doquery("SELECT racelaptime,userid FROM {{table}} WHERE raceid='1' ORDER BY racelap", "liverace");
while(($result = mysql_fetch_array($query))) {
$data[] = (float)$result['racelaptime'];
}
$script = $script . "\nvar myArray = new Array(";
foreach ($data as $key => $value){
if ($key < (count($data)-1)){
$script = $script . $value . ',';
}
else {
$script = $script . $value . ");\n";
}
}
这会在 JavaScript 中输出一个如下所示的数组:
myArray=[84.521,83.800,81.900]
这很好,因为这正是我的 java 脚本作为输入所需要的(时间以秒为单位,每圈用逗号分隔)。
现在我想实现多用户元素,但我不知道如何解决这个问题......
我的 MySQL 查询仍然按比赛圈数排序,但我还需要按用户 ID 对数据进行排序,因为我希望每个用户的所有圈数都排在 1 行中,另外,用户 ID 对我来说是未知的,可以变化(取决于哪个用户发布时间),所以我不能真正做一个“如果 userid==1 保存这里然后转到下一个”。
我是否应该在存储数据的 while 循环中使用 foreach 语句,但我如何告诉他将同一用户的所有圈数存储在第一行(以及第二行的下一个用户,等等。 .) 不使用大量 SQL 查询?
如果您可以提供比我当前的解决方案更优雅的解决方案来将 PHP 数组传递给 JavaScript,我会非常乐意进行更改,但使用当前“设置”的简单解决方案也会很棒(希望它是都很清楚)。
任何帮助将不胜感激,在此先感谢!
【问题讨论】:
-
分享您的 $data 输出并希望 java 脚本数组格式..
-
我上面想要的 JavaScript 数组格式是可以的,但是我只是想让每一行包含另一个用户的单圈时间(虽然格式相同),这样我就可以在我的脚本中使用 myArray 解析它[圈数] [用户]。我的问题更多在 php 方面,我的 $data 是一个数组,它只包含与上面的 myArray 示例相同的时间(但在 php 中)。
-
如果你得到简单的 php 数组数据,那么你应该使用 '$jArray = implode (',', $data)'。它会将您的数组数据用逗号分隔,例如 (11221.45, 1212.66, 21212.66),然后您将其转换为 java 脚本,例如
-
那会考虑几行吗?如,它将每行的每个值连接在一起,用逗号分隔还是将它们全部网格化在一行中?
-
是的,因为您只存储每个数组数据中的一列。如果您与 print_r 共享您的数组数据,那就太好了。或者您可以在查询语句中使用 group_concat 和 group by 子句。比如,“SELECT user_id, group_concat( laptime ) AS laptime FROM
speedGROUP BY user_id ORDER BY user_id LIMIT 0 , 30”
标签: javascript php mysql arrays numeric