Php 如何分解要在图像标记中使用的字符串

Php 如何分解要在图像标记中使用的字符串,php,laravel,controller,laravel-blade,laravel-8,Php,Laravel,Controller,Laravel Blade,Laravel 8,我在数据库列中以字符串格式存储了多个图像,如 “image1 image2 image3”使用内爆(“,$imagesArray) 现在我想分解这个字符串,并想在图像源名称中使用它,就像我在下面尝试的那样 @foreach (explode(" ",$images) as $item) <img src="{{ asset('storage/images'.$item) }}"> @endforeach 我希望它像这样分开 0 =>

我在数据库列中以字符串格式存储了多个图像,如
“image1 image2 image3”
使用
内爆(“,$imagesArray)
现在我想分解这个字符串,并想在图像源名称中使用它,就像我在下面尝试的那样

@foreach (explode(" ",$images) as $item)
<img src="{{ asset('storage/images'.$item) }}">
@endforeach
我希望它像这样分开

 0 => "image3.png"
  1 => "image3.png"
  2 => "image3.png"
是,图像本地存储在存储器/图像路径中

是的,$Images包含

[{"image":"image1.png image2.png image3.png"}]

如何将每个图像用于图像src请帮助我我是php和laravel新手,提前感谢

如果您向我们展示如何从数据库获取数据,我们可能可以避免解码到下面使用的数组

从您显示的内容来看,这里似乎有一个JSON字符串。如果是这样的话,你不应该马上分解它,而是首先解码它,得到你想要的道具,然后分解它:

@php
     $string = '[{"image":"image1.png image2.png image3.png"}]';
     $rows   = json_decode($string, true);
@endphp

@foreach ($rows as $row)

     @php
        $imageStr = $row['image'] ?? '';
        $images   = explode(" ", $imageStr);
     @endphp

     @foreach ($images as $image)
        <img src="{{ asset('storage/images'.$image) }}">
     @endforeach

@endforeach
@php
$string='[{“image”:“image1.png image2.png image3.png”}];
$rows=json_decode($string,true);
@endphp
@foreach($行作为$行)
@php
$imageStr=$row['image']??'';
$images=explode(“,$imageStr”);
@endphp
@foreach($images作为$image)
@endforeach
@endforeach
##注
如果我这样做,我可能会将逻辑移动到控制器,将每个图像路径添加到一个数组,将该数组传递给视图,然后让视图简单地在该数组上循环,输出每个图像标记。这样,所有的视图就不会被所有的逻辑弄得乱七八糟。

根据您的评论,
$images
是一个JSON字符串,因此您需要首先对其进行解码:

@foreach (explode(' ', json_decode($images, true)[0]['image'] ?? '') as $image)
    <img src="{{ asset('storage/images/'.$image) }}">
@endforeach
@foreach(explode(“”,json_解码($images,true)[0]['image']??“”)为$image)
@endforeach

假设数组可以有多个元素,正如@weslymith的评论中指出的那样

//假设图像具有如下值
$images=['{“image”:“image1.png image2.png image3.png”}','{“image”:“image4.png image5.png image6.png”}'];
$pathString=collect($images)->map(函数($image){
返回json_decode($image)->image;
})
->值()
->减少(功能($carry,$item){
返回$carry.=$item;
});
然后

@foreach (explode(' ', $pathString as $image)
    <img src="{{ asset('storage/images/'.$image) }}">
@endforeach
@foreach(分解(“”,$pathString作为$image)
@endforeach

当您尝试@foreach loopits时会出现什么错误?它没有像我预期的那样拆分字符串,它会像分解一样分解“[{”image:“1606378172_444px-Apache_NetBeans_Logo.svg.png”1=>“1606378172_iconfinder_android_245977.png”2=>“1606378172_iconfinder_Edit-01_1976055.png”}”尝试
资产('storage/images/'.$item)
foreach循环之前的
/
images的内容是什么?[{“image”:“image1.png image2.png image3.png”}]注意,这假设数组中只有一个元素。这可能是可以接受的,但如果它是一个数组,则最好考虑多个元素。它也可以完美且简短地工作,感谢您宝贵的时间sir@WesleySmith很好。我同意你在回答中所说的,可能有一种方法可以避免这样做JSON杂耍完全感谢您,先生,我不知道JSON字符串今天学到了什么新东西,它工作得很好,不幸的是,整个数组似乎是一个JSON字符串,而不是一个包含JSON字符串的PHP数组。上面说,OP正在使用Laravel并从DB获取数据,因此我们可能会删除所有JSON的东西,只要直接循环到DB行集合上,如果我们能看到代码的话。
@foreach (explode(' ', $pathString as $image)
    <img src="{{ asset('storage/images/'.$image) }}">
@endforeach