【问题标题】:Cannot get data from json_encoded array无法从 json_encoded 数组中获取数据
【发布时间】:2018-10-09 16:20:29
【问题描述】:

我有键和值数据。键是一个数组。我想foreach这个关键数据。我使用 laravel 5。我的 json_decoded 数组如下:

Collection {#1288 ▼
  #items: array:4 [
    "{"id":1,"title":"abc","path":"abc-path"}" => 19
  ]
}

但我无法像我想要的代码那样获取关键数据:

@foreach($trendings as $key => $value)

 {{ $key->id }}

@endforeach

它给出了“尝试获取非对象的属性”错误。但是如果写这样的代码:

 @foreach($trendings as $key => $value)

     {{ $key }}

   @endforeach

它给了我

{"id":1,"title":"abc","path":"abc-path"}

但我希望它们在我的 html 中使用。我怎样才能获取它们?

【问题讨论】:

  • 你的 $key 是 json 字符串。您需要json_decode($key) 才能访问字段。但更合理的方法——是修复你的收藏。为什么json字符串是key而不是value?
  • 这是 json 解码数据。这是redis数据,redis不允许我使用值
  • 你可能不理解,但我可以重复一遍:{"id":1,"title":"abc","path":"abc-path"} 是一个 json 字符串。要访问属性,您必须 json_decode它。
  • 那么然后解码$trendings的密钥。
  • 尝试$trendings =[ '{"id":1,"title":"abc","path":"abc-path"}' => 19 ]; foreach($trendings as $key => $value) { echo json_decode($key)->id; } 使用json_decode

标签: php arrays json laravel-5 redis


【解决方案1】:

在我看来,视图不应该执行 json_decode。 我希望视图能够获得已经解码的变量,我认为如果您的数据未完全解码,则视图之前会丢失一些东西。

当然,我宁愿先解决问题,也不愿修补你的观点。

【讨论】:

  • 不,我在控制器中为 $trendings 制作了 json_decode,但在这里它需要为 $key 进行第二个 json_decode。因为 $trendings 解码后仍然是 json 数据。
  • 我明白了,之前好像缺少了一些东西,第一次解析 $key 后怎么没有解码?也许在它被编码或之前被解码时会有些奇怪。我宁愿修复之前的问题,也不愿用第二次解码修补你的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多