PHP中如何从二维数组中保留每个重复元素的唯一实例?
PHP二维数组去重保留唯一实例
你的二维数组里存在重复的子数组,直接用array_unique()没法正确去重——因为这个函数默认会把数组元素转成字符串再比较,二维数组转字符串后都是Array,导致错误的去重结果。
下面给两种实用的解决办法:
方法1:序列化辅助去重
先把每个子数组序列化转成唯一字符串,用array_unique()去重后再转回来:
// 序列化每个子数组 $serializedItems = array_map('serialize', $myArray); // 去重 $uniqueSerialized = array_unique($serializedItems); // 反序列化回数组 $uniqueArray = array_map('unserialize', $uniqueSerialized); // 可选:重新索引数组,去掉原有的键名 $uniqueArray = array_values($uniqueArray);
方法2:循环遍历按唯一标识去重
如果子数组有明确的唯一标识(比如id),可以直接遍历数组,只保留每个标识第一次出现的实例:
$uniqueArray = []; foreach ($myArray as $item) { // 用id作为判断重复的依据,也可以改成name+id组合:$item['name'] . '_' . $item['id'] $uniqueKey = $item['id']; if (!isset($uniqueArray[$uniqueKey])) { $uniqueArray[$uniqueKey] = $item; } } // 可选:重新索引数组 $uniqueArray = array_values($uniqueArray);
内容的提问来源于stack exchange,提问作者SOUserNumber613
相关产品推荐
相关产品推荐

