PHP如何拆分含逗号的数组成员并得到唯一的一维数组?
实现目标一维数组的方案
你之前两种写法得到二维数组的核心原因是:每次explode拆分字符串得到的是子数组,直接将子数组作为单个元素塞入新数组,自然形成二维结构。下面给出3种可直接运行的实现方案:
方案1:改进foreach写法
在遍历拆分后将子数组的元素逐个推入新数组,不需要额外的降维操作:
$array = ['a', 'b,c,d', 'e', 'f,g']; $newArray = []; foreach ($array as $item) { // 用展开运算符将拆分后的子数组元素逐个压入新数组 array_push($newArray, ...explode(',', $item)); } // 如需去重可追加下面一行 $newArray = array_unique($newArray);
方案2:array_map后降维合并
先按你之前的写法得到二维拆分结果,再用array_merge展开合并为一维数组:
$array = ['a', 'b,c,d', 'e', 'f,g']; $splitedArr = array_map(function($val) { return explode(',', $val); }, $array); // 二维数组合并为一维 $newArray = array_merge(...$splitedArr); // 去重 $newArray = array_unique($newArray);
方案3:极简一行实现
先把整个原始数组用逗号拼接为完整字符串,再直接按逗号拆分,一步得到一维数组:
$array = ['a', 'b,c,d', 'e', 'f,g']; $newArray = array_unique(explode(',', implode(',', $array)));
内容的提问来源于stack exchange,提问作者AbsoluteBeginner
相关产品推荐
相关产品推荐

