zoukankan      html  css  js  c++  java
  • 数组去重复处理

    我有一个二维数组。我想把里面重复的去掉
    taylorr (2008-11-25 11:28:46)
    首先,要定义“重复”;
    其次,要给一点基本的数据:对数字和字符串和对象的判断操作是可以、也是应该不一样的;
    leehui1983 (2008-11-25 11:32:36)
    foreach ,unset
    wangdezhi (2008-11-25 11:36:43)

    QUOTE:

    原帖由 leehui1983 于 2008-11-25 11:32 发表
    foreach ,unset
    yafeikf (2008-11-25 11:46:57)
    array_unique

    ??
    karas9 (2008-11-25 11:48:03)
    array_unique
    xu569874 (2008-11-25 12:36:38)
    array_unique  对二维的不好使
    liexusong (2008-11-25 12:45:02)
    二,三维.....数组用递归!!偶最喜欢的方法!!
    xu569874 (2008-11-25 12:51:13)
    递归还怎么做
    liexusong (2008-11-25 14:15:04)
    想了很久,希望能帮到你!!N维数组都可以的!!
    [php]
    <?php
    function &kill_array_same($array) {
            $leng = count($array);
            for($i = 0 ; $i < $leng ; $i++) {
                    if(is_array($array[$i]) && count($array[$i]) > 0) {
                            $array[$i] = &kill_array_same($array[$i]);
                    } else {
                            for($j = $i + 1 ; $j < $leng ; $j++) {
                                    if($array[$i] == $array[$j]) {
                                            unset($array[$j]);
                                    }
                            }
                    }
            }
            return $array;
    }
    $array = array('hello',2,3,'hello',2,3,array(1,1,2,2,array(1,1,2,2,array(1,2,3,1,2,3))));
    print_r(kill_array_same($array));
    ?>
    [/php]

    输出:
    Array ( [0] => hello [1] => 2 [2] => 3 [6] => Array ( [0] => 1 [2] => 2 [4] => Array ( [0] => 1 [2] => 2 [4] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) ) )
    studyphp (2008-11-25 15:24:30)
    LS不错,用的是递归。N维都行。
    异度冰晶 (2008-11-25 16:27:00)
    也许想要的是这种,事实上这个函数我一直在用,因为有需求
    [php]
    function uniqueByChild($array, $child)
    {
            $child = "['" . implode("']['", explode(',', $child)) . "']";
            $buffer = array();
            foreach($array as $index => $value)
            {
                    eval("\$check = \$value{$child};");
                    if(in_array($check, $buffer))
                    {
                            unset($array[$index]);
                    }
                    else
                    {
                            $buffer[] = $check;
                    }
            }
            return $array;
    }

    $array = array(array('id' => 1, 'name' => 'name1'), array('id' => 2, 'name' => 'name2'), array('id'=>1, 'name' => 'name1'));
    $array2 = uniqueByChild($array, 'id');
    print_r($array2);  //array(array('id' => 1, 'name'=>'name1'), array('id' => 2, 'name' => 'name2'));
    [/php]
    另外附赠一个多维数组排序函数,与上面的函数类似
    [php]
    function sortByChild(&$array, $child, $asc = true, $keepAssoc = false)
    {
            $child = "['" . implode("']['", explode(',', $child)) . "']";
            if($asc)
            {
                    $sortFunc = create_function('$a, $b',"return \$a{$child} - \$b{$child};");
            }
            else
            {
                    $sortFunc = create_function('$a, $b',"return \$b{$child} - \$a{$child};");
            }
            if($keepAssoc)
            {
                    uasort($array, $sortFunc);
            }
            else
            {
                    usort($array, $sortFunc);
            }
    }
    [/php]
  • 相关阅读:
    事件对象
    事件方法on()
    each()遍历
    链接式操作
    理解选取更新范围
    net3.5 无网络环境安装
    visual studio 2017 报错 无法下载安装文件。请检查Internet连接,然后重试
    删除数据恢复数据语句 Oracle
    sqlserver还原数据库(mdf与ldf文件如何还原到SQLserver数据库)
    sqlserver2012卸载
  • 原文地址:https://www.cnblogs.com/wangjiangze/p/1950657.html
Copyright © 2011-2022 走看看