您现在的位置: 365建站网 > 365学习 > javascript /php 数组去重复的方法(array_unique)(在线去重工具)

javascript /php 数组去重复的方法(array_unique)(在线去重工具)

文章来源:365jz.com     点击数:214    更新时间:2018-01-07 09:51   参与评论

第一种方法:

<textarea id="list" class="toolarea">365建站网
www.365jz.com
www.baidu.com
www.365jz.com
365建站网
soft.365jz.com
www.365jz.com
tool.365jz.com
www.baidu.com
soft.365jz.com
tool.365jz.com
365建站网
www.365jz.com</textarea>
<input type="button" onclick="process()" value="去重处理" class="bt-green">

<script type="text/JavaScript">
function unique(ary) {
 var i = 0,
  gid='_'+(+new Date)+Math.random(),
  objs = [],
  hash = {
   'string': {},
   'boolean': {},
   'number': {}
  }, p, l = ary.length,
  ret = [];
 for (; i < l; i++) {
  p = ary[i];
  if (p == null) continue;
  tp = typeof p;
  if (tp in hash) {
   if (!(p in hash[tp])) {
    hash[tp][p] = 1;
    ret.push(p);
   }
  } else {
   if (p[gid]) continue;
   p[gid]=1;
   objs.push(p);
   ret.push(p);
  }
 }
 for(i=0,l=objs.length;i<l;i++) {
  p=objs[i];
  p[gid]=undefined;
  delete p[gid];
 }
 return ret;
}

function process(){
 list = document.getElementById('list');
 arr = list.value.split('\n');
 arr = unique(arr);
 list.value = "";
 for(key in arr){
	 list.value += arr[key] + '\n';
 }
 alert("处理完成!");
}
</script>

第二种方法

 function sx(){
  var rntArray=[],temp,hasValue;
  var array=document.getElementById("neirong").value.split("\n");
  for(var i in array){
   temp=array[i];
   hasValue=false;
   for(var j in rntArray){
    if(temp===rntArray[j]){
     hasValue=true;
     break;
    }
   }
   if(hasValue===false){
    rntArray.push(temp);
   }
  }
  document.getElementById("neirong1").value=rntArray.join("\n");
 }


PHP数组函数序列之array_unique() - 去除数组中重复的元素值

array_unique() 定义和用法 
array_unique() 函数移除数组中的重复的值,并返回结果数组。 

当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。 

返回的数组中键名不变。 

语法 
array_unique(array) 
参数 描述 
array 必需。规定输入的数组。 

说明 
array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。 

提示和注释 
注释:被返回的数组将保持第一个数组元素的键类型。 

例子 

<?php
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");
print_r(array_unique($a));
?> 

输出: 

Array ( [a] => Cat [b] => Dog )

例一:

<?php
$input = array("a" => "green","", "red","b" => "green", "","blue", "red","c" => "witer","hello","witer");
//$result = array_unique($input); //去除重复元素
$result = a_array_unique($input);   //只留下单一元素
foreach($result as $aa)
{
  echo $aa."<br />";
}



function a_array_unique($array)//写的比较好(写方法)
{
  $out = array(); //定义变量out为一个数组
  foreach ($array as $key=>$value) //将$array数组按照$key=>$value的样式进行遍历
  {
    if (!in_array($value, $out))//如果$value不存在于out数组中,则执行
    {
      $out[$key] = $value; //将该value值存入out数组中
    }
  }
  return $out; //最后返回数组out
}


?>




PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数
例二:

function unique_arr($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;
}

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (214人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------