php - 在 laravel 中更新多维数组
问题描述
我需要一些关于如何在 PHP 中更新多维数组的帮助。我正在使用以下数组来更新图像网格。我的图像数量各不相同。首先我上传并调整图像大小,然后将它们保存images
为数据库中的 Json 字段。我将图像大小默认设置为 300 并将其保存在thumb
字段中。这是我将其存储在数据库中的 json 图像字段:
[
{
"images": {
"300": "/storage/uploads/300.1.png",
"600": "/storage/uploads/600.1.png",
"900": "/storage/uploads/900.1.png",
"original": "/storage/uploads/1.png"
},
"thumb": "/storage/uploads/300.1.png"
},
{
"images": {
"300": "/storage/uploads/300.2.png",
"600": "/storage/uploads/600.2.png",
"900": "/storage/uploads/900.2.png",
"original": "/storage/uploads/2.png"
},
"thumb": "/storage/uploads/300.2.png"
},
{},
{}
]
例如,假设我要编辑第二张图片的大小,并将其从 300 更改为 600。这是我从编辑表单中得到的请求日志。
array:3 [▼
"_token" => "wZSerggegrgL1lcbhWZFwerfwerfwerfVx"
"_method" => "patch"
"imagesThumb" => array:4 [▼
"/storage/uploads/300.1.png" => "/storage/uploads/300.1.png"
"/storage/uploads/300.2.png" => "/storage/uploads/600.2.png"
"/storage/uploads/300.3.png" => "/storage/uploads/300.3.png"
"/storage/uploads/300.4.png" => "/storage/uploads/300.4.png"
]
]
如何更新第二张图片的拇指?
解决方案
您可以使用以下解决方案。这是通过玩array_flip()
函数来完成的。将address_to_json_file替换为您的 json 数据的地址。
$request = [
"/storage/uploads/files/2020/ads/images/300_2020_12_25_26b48.1.png" => "/storage/uploads/files/2020/ads/images/300_2020_12_25_26b48.1.png",
"/storage/uploads/files/2020/ads/images/300_2020_12_25_12567.2.png" => "/storage/uploads/files/2020/ads/images/600_2020_12_25_12567.2.png",
"/storage/uploads/files/2020/ads/images/300_2020_12_25_6da51.4.png" => "/storage/uploads/files/2020/ads/images/300_2020_12_25_6da51.4.png",
"/storage/uploads/files/2020/ads/images/300_2020_12_25_65509.png" => "/storage/uploads/files/2020/ads/images/300_2020_12_25_65509.png",
];
$sample_json = json_decode(address_to_json_file, true);
for ($i = 0; $i < count($request); $i++) {
$flipped_arr = array_flip($sample_json[$i]['images']);
foreach ($flipped_arr as $new_key => $original_key) {
if (!empty($request[$new_key]) && $new_key != $request[$new_key]) {
$sample_json[$i]['images'] = $request[$new_key];
}
}
}
dd($sample_json);
推荐阅读
- dns - 种子数据是域层的一部分吗?
- mule - 在mule 4 dataweave 2.0中使用给定字符修剪字符串
- python - 如何使用 Python 从 Oracle 数据库中表中的字符串中排除单词?
- pine-script - 如何找到最新的 HH 支点和最新的 LL 支点?
- linux-kernel - 为 Marvell CN9130-CRB 添加 Openwrt 支持
- reactjs - 为什么重新加载页面后我无法转到初始 URL?
- github-actions - 如何在远程服务器上进行 git pull,然后使用 github 操作重新创建 env 文件
- python - 使用 Pydantic 验证自定义根类型
- database - 索引 cosmos DB 中的新字段所需的额外大小
- javascript - 在渲染中用 for 循环错误反应 usestate