php - 如何以 JSON 格式转换两个数组值
问题描述
我的控制器
public function showcart()
{
$da = isset($_COOKIE["cart"]) ? $_COOKIE["cart"] : "[]";
$data = json_decode($da);
return view('customer.showcart', compact('data'));
}
刀:
<tbody>
@foreach ($data as $dat)
<form action="{{ url('/addcart') }}" method="post">
@csrf
<tr>
<td>{{ $dat['id'] }}</td>
<td>{{ $dat['quantity']}}</td>
</tr>
</form>
@endforeach
</tbody>
电流输出
{"id":["8","8","8","9","9","8","8","8","10"],"quantity":["3","2","3","3","2","1","2","1","6"]}
我想将其转换为 JSON 中的每个索引,例如带有数量 [0] 的 id[0],带有数量 [1] 的 id[1]。
解决方案
如果您的目标是键/值对,那么请注意一个对象不能有重复的键,并且由于您的id
值是 8、9 或 10(在示例中),输出不能有超过 3 个键:
{"8": 1, "9": 2, "10": 6}
无论如何,如果您的密钥在现实中确实是独一无二的,那么您需要array_combine
:
$arr = json_decode($da, true);
$data = array_combine($arr["id"], $arr["quantity"]);
请注意,您的分配$da
需要不同的默认情况以使其兼容:
$da = isset($_COOKIE["cart"]) ? $_COOKIE["cart"] : '{"id":[],"quantity":[]}';
最后,您的循环应该以不同的方式提取键和值:
<form action="{{ url('/addcart') }}" method="post">
@csrf
<table>
@foreach ($data as $key => $value)
<tr>
<td>{{ $key }}</td>
<td>{{ $value }}</td>
</tr>
@endforeach
</table>
</form>
推荐阅读
- java - 拜托,请帮帮我。我正在做一个项目,我正在从 Web 服务获取 JSON 格式的数据
- kubernetes - Gke - kubernetes / 如何确保给定节点上的部署隔离
- c++ - 哪个 STL 容器可以双向增长?
- java - Swing GUI 在使用线程时冻结
- java - 使用 Gradle 导出 jar 时出现 Firestore 依赖项的问题
- javascript - 使用包含空格的字符串调用 Error.constructor 时出现语法错误
- c# - 复杂项目中统一组件注册的最佳解决方案结构是什么?
- c++ - 使用共享 DLL 进行日志记录的体系结构
- reactjs - 如何将图像添加到 react-native-layout-grid?Github 仓库中没有专门提到的 props
- tcl - 无法定义全局定义的命名空间变量 TCL