Laravel中如何将过滤后的数组集合转为无键索引数组?
解决Laravel集合过滤后数组保留原索引的问题
你遇到的问题是因为filter方法会保留原数组/集合的键名,转成数组后自然带着原来的索引。要得到连续索引的标准数组,有两种简单方法:
方法一:用集合的values()方法重置索引
Laravel集合自带values()方法,专门用来重置集合的键为连续的数字索引,直接在过滤后调用即可:
$collection = collect($imageColumn)->filter(function ($value) use ($array) { return !in_array($value, $array); })->values(); // 重置索引 // 转成数组就是你要的格式 $newImageArray = $collection->toArray();
方法二:用PHP原生函数array_values()
如果已经得到了带旧索引的数组,直接用array_values()重新生成索引:
$collection = collect($imageColumn)->filter(function ($value) use ($array) { return !in_array($value, $array); }); $newImageArray = array_values($collection->toArray());
额外优化:简化删除逻辑
如果你的需求只是删除单个指定图片,其实不用写filter,用diff()方法更简洁:
// $imageToDelete就是你要移除的那张图的文件名 $newImageArray = collect($imageColumn)->diff([$imageToDelete])->values()->toArray();
这样得到的数组就是连续索引的,打印时不会显示键名,完全符合你的期望。
内容的提问来源于stack exchange,提问作者Khal
相关产品推荐
相关产品推荐

