如何在 Laravel 中筛选并格式化匹配预定义列表的产品数据
本文介绍如何使用 Laravel Collections 的 filter() 和 map() 方法从 API 响应中提取仅存在于预设白名单如 $topProds中的产品并统一转换为带 label 键的标准数组结构。 本文介绍如何使用 laravel collections 的 filter() 和 map() 方法从 api 响应中提取仅存在于预设白名单如 $topprods中的产品并统一转换为带 label 键的标准数组结构。在构建商品展示逻辑时常需对第三方 API 返回的原始产品列表进行“白名单过滤”——即只保留预先定义的核心品类如 laptop、printer 等同时标准化输出格式如统一首字母大写的 label 字段。直接使用 map() 无法实现条件筛选必须结合 filter() 完成双重处理。以下是一个健壮、可复用的实现方案public function getTopProducts(array $prod): array{ // 预定义白名单转为 Collection 提升查询性能 $topProds collect([laptop, printer, keyboard, monitor, usb adaptor]); // 从 API 响应中提取原始产品标题假设路径为 content.data[*].title $rawTitles collect($prod[content][data]) -pluck(title) // 提取所有 title 值返回扁平集合 -map(fn($title) strtolower(trim($title))); // 标准化小写 去空格确保大小写安全比对 // 过滤 映射先筛选存在白名单中的项再格式化为目标结构 return $rawTitles -filter(fn($title) $topProds-contains($title)) -map(fn($title) [label ucwords(str_replace(-, , $title))]) -values() // 重置键名确保返回连续数字索引数组 -all();}? 关键要点说明 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西