首页 > 解决方案 > 在 Laravel 中显示和引用 json_encode

问题描述

我不确定显示它的最佳方法是什么。我正在为我的网站创建一个可在不同控制器之间调整的活动日志。这是我的编码代码:

$properties = [
    'last_name' => $request->last_name,
    'first_name' => $request->first_name,
    'dob' => $request->dob,
    'unique_id' => $unique_id,
    'doctor_id' => $doctor->id
];
$log->properties = json_encode($properties);

但是,不同控制器上的属性可能具有revenue,address等字段。

在我的活动日志控制器的显示页面上,现在我正在使用{{$log->properties}}它来显示对象。它返回类似这样的输出:

{"last_name":"Test4","first_name":"Test4","dob":"1984-09-13","unique_id":"Test4Test41984-09-13","doctor_id":19}

最终,我想做的是让它将每个对象的项目显示为<strong>标签,然后显示相关信息。因此,在简单的 html 中,上述属性如下所示:

<strong>last_name:</strong> Test4<br>
<strong>first_name:</strong> Test4<br>
<strong>dob:</strong> 1984-09-13<br>
<strong>unique_id:</strong>Test4Test41984-09-13<br>
<strong>doctor_id:</strong> 19

由于每个属性中的键不同,具体取决于从哪个控制器中提取,我不确定如何显示它。我什至无法找出如何引用对象内部。例如,{{$key->properties->last_name}}不引用姓氏。也没有{{$key->properties()->last_name}}

标签: phplaravel

解决方案


当您使用 json_encode 将对象存储在$log->properties中时,您正在将对象转换为 json 字符串,这是因为您不能使用$key->properties->last_name,为此您可以在$key中使用 json_decode ->properties变量,然后您将可以访问每个属性。

要显示数据而不考虑变量名称,您可以执行以下操作:

$properties = json_decode($key->properties, true);

foreach ($properties as $key => $value) {
    echo '<strong>'.$key.':</strong> '.$value.'<br>';
}

或者你可以使用刀片来显示这个,关键是你需要将你的 json 转换为一个数组,然后遍历他的键和值。


推荐阅读