php 去重数组,php 数组 去重

/**

*

* 过滤包含,当前关键词在后面出现,后面删掉

* 关键字 留短不留长

* @param $arr=array();

* @return $newArr=array();

* @update 2013/9/24

*/

function arrFilter(&$arr){

$newArr=&$arr;

$count=count($newArr);

for($i=0;$i

for($k=$count-1;$k>$i;$k--){

$needle=$newArr[$i];

$haystack=$newArr[$k];

if(!$needle) continue;

$rst = substr($haystack,0,strlen($needle))==$needle?1:0;

if($rst){

array_splice($newArr,$k,1);

array_values($newArr);

$count--;

};

}

}

}

//优化后算法

function arrFilter2(&$arr){

sort($arr);

foreach($arr as $v1)

{

while($v2 = current($arr)){

$l1 = strlen($v1);

$l2 = strlen($v2);

if( $l1>$l2 or $v1 != substr($v2,0,$l1) ) break;

$k = key($arr);

unset($arr[$k]);

}

}

}

//字符串有短到长排列

function cmpStr($str1, $str2){

$a=strlen($str1);

$b=strlen($str2);

if ($a == $b) {

if($str1==$str2){

return 0;

}else{

return ($str1 < $str2) ? -1 : 1;

}

//return 0;

}

return ($a < $b) ? -1 : 1;

}

$aS = array('baaab', 'aa','cc', 'bb','aaaa', 'dd','aaaaa');

usort($aS, "cmpStr");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值