
本文介绍使用 array_column() 和 array_unique() 组合,快速提取并去重多维数组中某一列(如 productSize)的值,适用于下拉菜单等需避免重复选项的场景。
本文介绍使用 `array_column()` 和 `array_unique()` 组合,快速提取并去重多维数组中某一列(如 productsize)的值,适用于下拉菜单等需避免重复选项的场景。
在实际开发中,数据库查询常返回结构相似但部分字段(如 productSize、productCode 或 colorCode)高度重复的多维数组。若直接遍历渲染
✅ 正确做法是先提取目标列 → 再去重 → 最后遍历渲染,核心仅需两行 PHP 函数:
<?php // 提取 productSize 列的所有值 $sizes = array_column($data['info'], 'productSize'); // 去除重复值,保留首次出现项 $uniqueSizes = array_unique($sizes); ?><select class="form-control"><?php foreach ($uniqueSizes as $size): ?><option value="<?= htmlspecialchars($size) ?>">= htmlspecialchars($size) ?></option> <?php endforeach; ?></select>
? 关键说明:
- array_column($array, 'key') 是 PHP 5.5+ 内置函数,专为多维数组列提取设计,比手动 foreach + isset() 更简洁高效;
- array_unique() 默认以字符串方式比较,自动忽略数字/字符串类型差异(如 '8080' 与 8080),如需严格类型区分,可传入 SORT_REGULAR 标志;
- 安全提示: 输出到 HTML 前务必使用 htmlspecialchars() 转义,防止 XSS 漏洞(尤其当 productSize 可能含用户输入内容时);
- 若需按原始顺序保留唯一值(array_unique 本身已保证键名有序),无需额外排序;若需升序展示,可追加 sort($uniqueSizes, SORT_NATURAL)。
? 扩展用法:同样逻辑可复用于其他字段,如生成去重的颜色下拉菜单:
$colors = array_unique(array_column($data['info'], 'colorCode'));
综上,该方案简洁、可靠、符合 PSR 规范,是处理此类“列级去重”需求的标准实践。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











