【问题标题】:Accessing JSON Array with PHP使用 PHP 访问 JSON 数组
【发布时间】:2018-02-01 22:56:42
【问题描述】:

似乎无法弄清楚如何在我的 for 循环中访问数组中的 JSON 对象。任何帮助都会很棒。 杰森:

[
 {
  subject: "******",
  subscribers_primary_advisor_id: "******",
  comments_first: "******",
  created_at: "*******",
  discussion_category: "*****",
  last_comment_by: "******",
  last_comment_by_id: "*******",
  updated_at: "*******"
 },

这是我的 php:

for($j = 0; $j < $size; $j++){
$sql = "INSERT INTO advisor_discussion(`comment_subject`,`advisor_id`,`content`,`date_created`,`discussion_category`,`
last_comment_id`,`updated_at`) VALUES (?,?,?,?,?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('sssssss', $comment_subject, $advisor_id, $content, $date_created, $discussion_category, $last_comment_id, $updated_at);

$comment_subject = $discussion['subject'][$j];
$advisor_id = $discussion['subscribers_primary_advisor_id'][$j];
$content = $discussion['comments_first'][$j];
$date_created = $discussion['created_at'][$j];
$discussion_category = $discussion['$discussion_category'][$j];
$last_comment_id = $discussion['last_comment_by_id'][$j];
$updated_at = $discussion['updated_at'][$j];

if ($stmt->execute() !== TRUE) {
  var_dump($stmt);
  die("Error inserting discussion");
}

}

【问题讨论】:

  • 您的 JSON 数据包含一个带有对象的 JavaScript 数组,您应该通过引用数组中的索引来访问每个对象。所以它会是 $discussion[$j]['subject'] 等等。我希望您的 $size 变量包含 count($discussion);

标签: php arrays json object


【解决方案1】:

假设您已经使用 json_decode 函数解析了 JSON,并且您的 JSON 字符串中包含多个 JS 对象,那么也许可以用 $discussion['subject'][$j] 代替 $discussion[$j]['subject']

换句话说,首先是索引,然后是 JS 对象属性。

还要注意 json_decode 也可以创建 PHP 对象。第二个参数见这里:http://php.net/manual/en/function.json-decode.php

如果你没有指定你想要一个关联数组,那么你可能想尝试做$discussion[$j]-&gt;subject,因为你会得到一个对象数组。

【讨论】:

  • 当我尝试两种方式时,我得到一个未定义的索引,所以我认为它不会通过 for 循环中的数据解析,并且前面有增量。还有其他建议吗?
  • 您是否尝试过将其作为对象属性访问?我的意思是像$discussion[$j]-&gt;subject - 可能是您的 JSON 对象被解析为 PHP 标准对象。
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多