【问题标题】:json_encode turns array into an objectjson_encode 将数组转换为对象
【发布时间】:2014-05-17 16:15:25
【问题描述】:

我已经为social media website I'm working on 创建了一个“喜欢”系统,但我在使用 json_encode 和 json_decode 时遇到了一些问题。我使用数组来存储点赞帖子的人,所以我需要这两个函数来使其可存储,但由于某种原因,它有时会将对象保存到数据库中:

{"1":"admin"}

而不是一个数组(我想要的):

["admin"]

这是我的代码:

if ($liked_by == NULL){ $liked_by = Array(); }
if (! in_array($user, $liked_by)){
  $liked_by[] = $user;
  $likes = $row['likes']+1;
  $liked_by = json_encode($liked_by);
  mysql_query("UPDATE $stream SET liked_by = '$liked_by' WHERE id = ".$id, $db)
    or die(mysql_error($db));
  mysql_query("UPDATE $stream SET likes = '$likes' WHERE id = ".$id, $db)
    or die(mysql_error($db));
} else{
  if(($liker = array_search($user, $liked_by)) !== false) {
    unset($liked_by[$liker]);
  }
  $likes = $row['likes']-1;
  $liked_by = json_encode($liked_by);
  mysql_query("UPDATE $stream SET liked_by = '$liked_by' WHERE id = ".$id, $db)
    or die(mysql_error($db));
  mysql_query("UPDATE $stream SET likes = '$likes' WHERE id = ".$id, $db)
    or die(mysql_error($db));
}

很抱歉使用了已弃用的 mysql 函数...

我只是不确定发生了什么。 提前致谢。

【问题讨论】:

  • 没关系,因为您可以将其作为json_decode($data,true) 作为数组取回
  • 您的示例中似乎缺少零索引,这可能会导致问题,原因可能是您的unset() 电话。一个简单的解决方案是在编码之前调用array_values()
  • ^ 请参阅json_dencode() 的文档。
  • 这不会一直发生,它似乎只是随机发生。
  • @Sirko 你是什么意思?

标签: php mysql arrays json


【解决方案1】:

你可以用作

json_decode($data,true);

$data 是从 DB 中保存的数据。

上面将返回一个数组,您可以对其进行操作以进行进一步操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2018-12-04
    • 2021-06-16
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多