ibeautiful
我对子数组的定义是像 ['a', 'b', 'c', 'a'] 这样的单个数组。我的答案:$result = array();foreach ($listData as $line) { //子数组内部去重,再组装回原来的格式 $result[] = array_unique($line);}//子数组先去重再合并的结果数量 和 先合并子数组再去重的结果数量 做比较。//如果是相同的,意味着不存在跨子数组的重复,只存在子数组内部重复,所以`True`var_dump(count(array_merge(...$result)) === count(array_unique(array_merge(...$listData))));我这个答案调用系统函数次数比较多,看起来简洁一些,但是PHP array_xxx 这类函数很大一部分性能是不具备优势的,如果不用这些函数,能相对程度提高运行效率。方便理解的辅助参考信息:原始数据:$listData = [ '111' => ['a', 'b', 'c', 'a'], '222' => ['d', 'e', 'f', 'f', 'b'], '333' => ['g', 'h'], '444' => ['i', 'j']];然后 $result 最终是这样的:$listData = [ '111' => ['a', 'b', 'c'], '222' => ['d', 'e', 'f', 'b'], '333' => ['g', 'h'], '444' => ['i', 'j']];子数组先去重再合并的结果Array(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => b
[7] => g
[8] => h
[9] => i
[10] => j
)用于和上面进行数量(数组元素数量)比较的,所谓的“先合并子数组再去重的结果”:Array(
[0] => a
[1] => b
[2] => c
[4] => d
[5] => e
[6] => f
[9] => g
[10] => h
[11] => i
[12] => j
)