
本文介绍使用 array_column() 和 array_unique() 组合,快速提取并去重多维数组中某一列(如 productSize)的值,适用于下拉菜单等需避免重复选项的场景。
本文介绍使用 `array_column()` 和 `array_unique()` 组合,快速提取并去重多维数组中某一列(如 productsize)的值,适用于下拉菜单等需避免重复选项的场景。
在实际开发中,数据库查询常返回结构相似但部分字段(如 productSize、productCode 或 colorCode)高度重复的多维数组。若直接遍历渲染 <select> 下拉框,会导致大量冗余选项,影响用户体验与页面语义正确性。例如,原始数据中 4 条记录的 productSize 均为 8080,但 foreach 循环会生成 4 个完全相同的 <option>。
✅ 正确做法是先提取目标列 → 再去重 → 最后遍历渲染,核心仅需两行 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)。
? 扩展用法:同样逻辑可复用于其他字段,如生成去重的颜色下拉菜单:
立即学习“PHP免费学习笔记(深入)”;
$colors = array_unique(array_column($data['info'], 'colorCode'));
综上,该方案简洁、可靠、符合 PSR 规范,是处理此类“列级去重”需求的标准实践。



















