PHP如何从嵌套数组中提取值合并为单个数组并去重
实现方案
你可以通过以下两种方式实现需求,最终都能得到目标一维去重数组:
方案1:使用array_walk_recursive(支持任意深度嵌套数组)
如果你的数组后续可能出现更深层级的嵌套,推荐用这个方法:
// 模拟你的原始父数组 $parentArray = [ [4, 1861], [4, 1938], [4, 1452], [4, 1938], [21] ]; // 收集所有嵌套元素 $allValues = []; array_walk_recursive($parentArray, function($val) use (&$allValues) { $allValues[] = $val; }); // 去重并重置数组索引 $arr = array_values(array_unique($allValues));
之前调用失败大概率是没有给收集结果的数组加引用符号
&,导致回调函数内的修改无法同步到外部数组。
方案2:使用展开运算符+array_merge(仅适用于当前固定二维结构)
如果你的数组确定只有两层结构,用这个方法更简洁:
// 模拟你的原始父数组 $parentArray = [ [4, 1861], [4, 1938], [4, 1452], [4, 1938], [21] ]; // 展开所有子数组合并为一维数组 $merged = array_merge(...$parentArray); // 去重并重置数组索引 $arr = array_values(array_unique($merged));
直接传父数组给
array_merge无法完成合并,需要用...展开运算符把所有子数组作为独立参数传入函数。
两种方法最终输出的$arr都为[4,1861,1938,1452,21],符合你的需求。
内容的提问来源于stack exchange,提问作者user16283349
相关产品推荐
相关产品推荐

