【问题标题】:How do I format the sql value "[a,b,c]"?如何格式化 sql 值“[a,b,c]”?
【发布时间】:2018-06-13 19:27:43
【问题描述】:

在一场比赛中,有三支不同的球队。例如,团队 a、b 和 c。 在游戏的数据库中,游戏时间是这样报告的:“[a,b,c]”,每个字母代表用户在该特定球队中的出场时间。 我使用 PHP 从数据库中获取数据以显示在网站上,但它只是显示为“[14,0,1]”,因为我在 a 队有 14 分钟,在 b 队有 0 分钟,在 c 队有 1 分钟.

如何通过 PHP 或 JSON 设置格式以添加 a、b 和 c,或者在本例中为 14+0+1?

PHP中的代码:

$sql = "SELECT * FROM players WHERE playerid ='". $steamprofile['steamid']  
."'";
$result = $db->query($sql);
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        $playtime = $row["playtime"];
    }

HTML 中的代码:

<span id="label">Playtime</span>: <b><span id="playerPlaytime"><?php echo 
$playtime; ?></span></b><br>

输出: http://prntscr.com/jum85v

【问题讨论】:

  • PHP 认为游戏时间是什么? var_dump(游戏时间)。如果你的 PHP 足够现代,实际上匹配新的数组表示法......嗯;-)
  • 所以你想要15作为结果???
  • string(9) ""[14,0,1]""
  • 是的,我想要 15 作为结果,但如果我再玩 6 分钟并且它是“[20,0,1]”,它会说 21
  • 如果你想要 JSON/JavaScript,答案在这里:stackoverflow.com/questions/1230233/…

标签: php html sql json formatting


【解决方案1】:

通过逗号分割创建一个数组,然后计算总和(先修剪多余的东西):

$playtime = array_sum(explode(',', trim($row['playtime'], '"[]')));

要使用 JSON,您仍然需要修剪引号:

$playtime = array_sum(json_decode(trim($row['playtime'], '"')));

【讨论】:

    【解决方案2】:

    如果数据库中的变量是一个字符串(它可能是一个 JSON 对象),那么在 PHP 中你可以这样做:

    $playtime = array_sum(json_decode($row['playtime']));
    

    【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多