[英]Updating a multidimensional array in 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()
function 来完成的。 将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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.