繁体   English   中英

更新 laravel 中的多维数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM