首页 > php代码 > PHP二维数组去重复项自定义函数

PHP二维数组去重复项自定义函数

如果我们是一维数据去重复项就不要说了有直接的函数了,但二维数据php未提供函数了,下面小编来给大家推荐两个不错的二维数组去重复项自定义函数吧。

例1

<?php
function unique_array_2d($array2D, $stkeep = false, $ndformat = true) {
    // 判断是否保留一级数组键 (一级数组键可以为非数字)
    if ($stkeep) $stArr = array_keys($array2D);
    // 判断是否保留二级数组键 (所有二级数组键必须相同)
    if ($ndformat) $ndArr = array_keys(end($array2D));
    //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
    foreach ($array2D as $v) {
        $v = join(",", $v);
        $temp[] = $v;
    }
    //去掉重复的字符串,也就是重复的一维数组
    $temp = array_unique($temp);
    //再将拆开的数组重新组装
    foreach ($temp as $k => $v) {
        if ($stkeep) $k = $stArr[$k];
        if ($ndformat) {
            $tempArr = explode(",", $v);
            foreach ($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
        } else $output[$k] = explode(",", $v);
    }
    return $output;
}
$array2D = array(
    'first' => array(
        'title' => '1111',
        'date' => '2222'
    ) ,
    'second' => array(
        'title' => '1111',
        'date' => '2222'
    ) ,
    'third' => array(
        'title' => '2222',
        'date' => '3333'
    )
);
echo "<pre>";
print_r(unique_array_2d($array2D, true));
/**
 * 将二维数组通过指定的 key 去重
 *
 * @param array $arr 要去重的数组
 * @param array $by  指定key去重,该参数不指定将返回 array()
 * @return array
 */
function array_multunique($arr, $by = array()) {
    $temp = array();
    foreach ($arr as $key => $val) {
        foreach ($by as $v) {
            $temp[$key].= isset($val[$v]) ? $val[$v] : '';
        }
    }
    return array_intersect_key($arr, array_unique($temp));
}
/*$aa = array (
array ('id' => 123, 'name' => '张三' ),   
array ('id' => 123, 'name' => '李四' ),   
array ('id' => 124, 'name' => '王五' ),   
array ('id' => 125, 'name' => '赵六' ),   
array ('id' => 126, 'name' => '赵六' )   
);  
$key = 'id';  
array_multunique ($aa, array('id')); */
function array_remove_key($array, $keys) {
    if (!is_array($array) || !is_array($keys)) {
        return false;
    }
    foreach ($array as $t) {
        foreach ($keys as $k) {
            unset($t[$k]);
        }
        $doc[] = $t;
    }
    return $doc;
}
/*$array = array(
   '0' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')),
   '1' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee'))
);
print_r( array_remove_key($array,array('c')));*/
function array_remove_key_val(&$a, $b, $c) {
    foreach ($a as $key => $value) {
        if (isset($value[$b]) && ($value[$b] == $c)) {
            unset($a[$key]);
        }
    }
}
/*$a=array(
       array('id'=>1,'num'=>10,'type'=>'news'),
       array('id'=>2,'num'=>100,'type'=>'pic')
);
print_r( array_remove_key_val($a,"id","1") );*/
?>

例2

<?php
//二维数组去掉重复值
function array_unique_fb($array2D) {
    foreach ($array2D as $v) {
        $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
        $temp[] = $v;
    }
    $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
    foreach ($temp as $k => $v) {
        $temp[$k] = explode(",", $v); //再将拆开的数组重新组装
        
    }
    return $temp;
}
//二维数组去掉重复值  并保留键值
function array_unique_fb($array2D) {
    foreach ($array2D as $k => $v) {
        $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
        $temp[$k] = $v;
    }
    $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
    foreach ($temp as $k => $v) {
        $array = explode(",", $v); //再将拆开的数组重新组装
        $temp2[$k]["id"] = $array[0];
        $temp2[$k]["litpic"] = $array[1];
        $temp2[$k]["title"] = $array[2];
        $temp2[$k]["address"] = $array[3];
        $temp2[$k]["starttime"] = $array[4];
        $temp2[$k]["endtime"] = $array[5];
        $temp2[$k]["classid"] = $array[6];
        $temp2[$k]["ename"] = $array[7];
    }
    return $temp2;
}
?>


教程地址:http://www.phprm.com/code/53661.html

欢迎转载!但请带上文章地址^^

标签:foreach explode

相关文章

发表留言