如何将两个数组值转换为 JSON 格式
Posted
技术标签:
【中文标题】如何将两个数组值转换为 JSON 格式【英文标题】:how to convert two array value in JSON format 【发布时间】:2021-11-14 21:19:06 【问题描述】:我的控制器
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 中的每个索引,例如 id[0] 和数量 [0],id[1] 和数量 [1]。
【问题讨论】:
试试json_decode($da, true)
,为什么需要compact
。 $data
已经是一个数组
预期的结果是什么?你能以 php 格式提供这个示例数据吗?
''如果我使用'''json_decode($da, true)''',则尝试读取数组上的属性“id”。
"8":3,"8":2,"8":3
像这样。
那么请更新您问题中的示例,这样才有意义。
【参考方案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>
【讨论】:
array_combine(): Argument #1 ($keys) must be of type array, string given
无法重现。看到它在3v4l 上运行。一定与您告诉我们的有所不同。
请提供您对$_COOKIE["cart"]
的准确 值,以便您的问题可以重现。
检查。我会让你知道兄弟。 :)
嗨!当我使用 dd 查看显示良好的值时。就像array:3 [▼ 8 => "3" 9 => "4" 10 => "4" ]
,但是当我试图将数据传递给刀片时,它说的是Attempt to read property "id" on string
this。以上是关于如何将两个数组值转换为 JSON 格式的主要内容,如果未能解决你的问题,请参考以下文章
如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列