如何在 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 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

相关推荐
笃行3502 小时前
KingbaseES KSQL Developer 的连接管理、数据处理与对象管理
数据库
杨杨杨大侠2 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
ha_lydms2 小时前
MaxCompute中加密与解密函数
大数据·数据库·数据仓库·hadoop·dataworks·maxcompute·odps
Shadow(⊙o⊙)2 小时前
MySQL内置函数
数据库·mysql
LOVE️YOU2 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学2 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客3 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.3 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
笃行3503 小时前
金仓 KingbaseES PL/SQL 开发全攻略:异常处理、数据类型、调试优化与过程语句
数据库
风早爽太3 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi