提示信息

PHP实现一维数组与二维数组去重功能示例

南来风 已关注

使用array_unique函数即可,使用实例如下:

  1. <?php
  2. $aa=array("1","2","3","3","2","watermalon");
  3. $bb=array_unique($aa);
  4. print_r($bb);
  5. ?>

结果如下:

  1. Array ( [0] => 1 [1] => 2 [2] => 3 [5] => watermalon )

二维数组的重复项: 对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明: 因为某一键名的值不能重复,删除重复项

  1. <?php
  2. function assoc_unique($arr, $key)
  3. {
  4. $tmp_arr = array();
  5. foreach($arr as $k => $v)
  6. {
  7. if(in_array($v[$key], $tmp_arr))//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
  8. {
  9. unset($arr[$k]);
  10. }
  11. else {
  12. $tmp_arr[] = $v[$key];
  13. }
  14. }
  15. sort($arr); //sort函数对数组进行排序
  16. return $arr;
  17. }
  18. $aa = array(
  19. array('shopId' => 1),
  20. array('shopId' => 1),
  21. array('shopId' => 2),
  22. array('shopId' => 2)
  23. );
  24. $key = 'id';
  25. $result = assoc_unique($aa, $key);
  26. print_r($result);
  27. ?>

显示结果为:

  1. Array ( [0] => Array ( [shopId] => 1 ) [1] => Array ( [shopId] => 2 ))
    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
南来风 关注 已关注

最近一次登录:2024-10-26 12:47:10   

暂时还没有签名,请关注我或评论我的文章

风中凌乱
07月27日

使用array_unique对于简单的一维数组十分有效,节省了不少时间。

铭记心: @风中凌乱

使用array_unique确实是处理一维数组去重的快速方法,节省了很多手动去重的麻烦。不过,对于二维数组来说,去重就稍微复杂一些。可以通过结合使用array_maparray_unique来完成。例如,采用如下方法:

$array = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'],
];

$unique = array_map("unserialize", array_unique(array_map("serialize", $array)));

这样能够方便地去除重复的子数组。如果需要更复杂的去重逻辑或性能优化,建议查看 PHP Manual - array_unique

11月15日 回复 举报
老明
08月02日

二维数组去重时,可以通过键名的唯一性删除不必要的重复元素,逻辑上清晰明了。

浮华落尽: @老明

确实,利用键名的唯一性是处理二维数组去重的有效方式。可以使用PHP的array_unique()结合array_column()来提取独特的元素,例如:

$multiArray = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'],
];

$result = array_unique($multiArray, SORT_REGULAR);

此外,利用array_reduce()也能实现去重。总体来说,这些方法逻辑清晰且高效。如果需要深入了解,可参考 PHP官方文档 了解更多数组操作的细节。

11月08日 回复 举报
回眸的笑
08月05日

这段代码展示了如何根据某个特定键对二维数组进行去重操作,非常实用。

顾琅的画: @回眸的笑

这位用户的观点很赞!去重在处理数据时非常重要,尤其是在面对大数据量时,确保数据的唯一性可以提高效率。可以使用如下代码实现一维数组和二维数组的去重:

function uniqueMultiArray($array, $key) {
    $tempArray = [];
    foreach ($array as $v) {
        if (!isset($tempArray[$v[$key]])) {
            $tempArray[$v[$key]] = $v;
        }
    }
    return array_values($tempArray);
}

$data = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'], // Duplicate
];

$result = uniqueMultiArray($data, 'id');
print_r($result);

了解更多去重技巧可以参考PHP官方文档

11月11日 回复 举报
寂寞未央
08月09日

二维数组处理上的细节决定了数据的准确性,函数的使用显得尤为关键。通过自定义函数实现复杂逻辑处理,可以更好地掌握数据的完整性与可靠性。

莫留恋: @寂寞未央

非常赞同你的观点!在处理二维数组时,确实需要特别关注各个细节。例如,自定义函数在去重时尤为重要。可以考虑使用array_unique结合array_map来实现简单的去重。以下是一个简单示例:

function arrayUnique($array) {
    return array_unique($array, SORT_STRING);
}

function arrayUnique2D($array) {
    $temp = [];
    foreach ($array as $item) {
        $temp[] = implode('|', $item); // 将二维数组项转为字符串
    }
    return array_unique($temp);
}

在处理复杂的业务逻辑时,实施单元测试确保数据质量也是一个不错的建议,推荐使用 PHPUnit 进行功能测试。可以参考 PHP Manual 以获得更多的信息和用法!

11月14日 回复 举报
梁婉婷
08月16日

$array_unique在处理简单数组时已经足够,但在复杂的场景下,还是需要自己设计去重方式。

试探: @梁婉婷

非常赞同你的观点!在处理复杂数据时,array_unique 的确不能满足所有需求,尤其是当我们需要根据特定字段去重时。可以自定义逻辑,例如使用 array_maparray_flip 结合来实现更灵活的去重方式。

以下是一个简单示例,展示如何通过字段去重二维数组:

$data = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'],
];

$result = [];
foreach ($data as $item) {
    $result[$item['id']] = $item;
}
$result = array_values($result); // 重建索引
print_r($result);

可以参考PHP官方文档了解更多信息。这样可以确保在复杂场景下的灵活性和效率。

11月14日 回复 举报
偆树
08月25日

二维数组的去重需要考虑多种情况,使用自定义函数可以灵活处理。

大侠蓝星: @偆树

非常赞同你的观点,二维数组去重确实需要灵活的处理。自定义函数可以根据不同的需求进行调整,确保去重的准确性。以下是一个简单的示例,用于去重二维数组:

function array_unique_multidimensional($array) {
    $temp_array = [];
    foreach ($array as $val) {
        if (!in_array($val, $temp_array)) {
            $temp_array[] = $val;
        }
    }
    return $temp_array;
}

// 示例数据
$data = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'],
];

$result = array_unique_multidimensional($data);
print_r($result);

这个函数可以解决基本的去重需求,但在更复杂的场景中,可以考虑其他条件进行去重,比如某个特定键的值。可以参考 PHP.net 的官方文档 来获取更多信息和思路。

11月09日 回复 举报
幽深
08月31日

利用键值的唯一性来去除重复数据是有效的技巧,实现在很多场景中都能被应用。

流浪文人: @幽深

确实,利用键值的唯一性去重对于数据处理是一个非常有效的策略。特别是在处理二维数组时,可以通过将一维数组的值作为键存储,从而迅速识别和排除重复项。以下是一个简单的 PHP 示例,展示如何使用 array_unique() 和键值数组进行去重:

$array = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'], // 重复
];

$result = [];
foreach ($array as $item) {
    $result[$item['id']] = $item; // 利用 ID 作为键去重
}
$result = array_values($result); // 重新索引

这个方法在许多场景下都非常实用,尤其是在处理数据库查询结果时。进一步学习 PHP 数组操作的更多知识,可以参考 PHP Array Documentation

11月15日 回复 举报
韦寇仇
09月03日

对于数组去重,理解操作背后的数据结构和算法至关重要,这样才能编写出高效的代码。

云中: @韦寇仇

对于数组去重的确需要深入理解相关的数据结构和算法,这样在处理大规模数据时可以确保良好的性能。比如,在PHP中,对于一维数组,使用array_unique()函数非常简单。然而,针对二维数组的去重,则可以结合array_map()array_unique()来实现,例如:

$array = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'],
];

$result = array_unique(array_map("serialize", $array));
$result = array_map("unserialize", $result);

这样的方法可以避免重复项,实际操作中结合合适的算法应该能够提升代码效率。可参考 PHP 官方文档 了解更多关于数组操作的细节。

11月12日 回复 举报
守他
09月07日

学会在PHP中使用去重函数是编程的基础,写出更简洁高效的代码。

黑白年代: @守他

非常赞同你的观点!在PHP中掌握去重的技巧确实非常重要。为了实现一维数组去重,可以使用array_unique()函数,而对于二维数组去重,通常需要结合array_map()array_unique()来处理。以下是一个简单示例:

// 一维数组去重
$array1 = [1, 2, 2, 3, 4];
$uniqueArray1 = array_unique($array1);

// 二维数组去重
$array2 = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice'],
];
$uniqueArray2 = array_unique(array_map('serialize', $array2));
$uniqueArray2 = array_map('unserialize', $uniqueArray2);

掌握这些技巧,不仅能让代码更加优雅,也能提升性能。想了解更多,可以参考PHP文档

11月11日 回复 举报
散场电影
09月09日

通过示例理解PHP中数组去重的方法,能便于在项目中快速应用解决实际问题,提升开发效率。

韦雨苗: @散场电影

非常认同你的观点,数组去重在项目开发中确实非常实用。PHP提供了一些内置函数,如array_unique()可以方便地实现一维数组去重,而对于二维数组,可以利用array_map()配合array_unique()来实现。例如,针对二维数组按某个字段去重,可以使用如下代码:

$array = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 1, 'name' => 'Alice']
];

$result = array_unique(array_map("serialize", $array));
$result = array_map("unserialize", $result);

print_r($result);

此外,推荐参考PHP官方文档来深入理解数组操作的各种函数:PHP Array Functions

11月09日 回复 举报
×
免费图表工具,画流程图、架构图