> 백엔드 개발 > PHP 튜토리얼 > 2000条数据的数组,找出有重复值的索引

2000条数据的数组,找出有重复值的索引

WBOY
풀어 주다: 2016-06-13 10:37:16
원래의
1033명이 탐색했습니다.

2000条数据的数组,找到有重复值的索引.
例如 一个数组含有 1,2,2,2,3,4,5,5,5,6,2,2,7,8,2,5,3,9,...............

得到 2的重复索引2,3,10,11,14
  5的重复索引7,8,15
  ....

不能2重for或者while循环,这样代价太大.

------解决方案--------------------

PHP code
$arr    = array(1,2,2,2,3,4,5,5,5,6,2,2,7,8,2,5,3,9);$tmp    = array();foreach($arr AS $k => $v){    if(isset($tmp[$v]))    {        if($tmp[$v])        {            $tmp[$v]    .= ",";        }        $tmp[$v]    .= $k;    }    else    {        $tmp[$v]    = "";    }}foreach($tmp AS $k => $v){    if($v)    {        echo    $k, "=>", $v, "\n";    }}unset($tmp);<br><font color="#e78608">------解决方案--------------------</font><br>
로그인 후 복사
PHP code
$a = array( 1,2,2,2,3,4,5,5,5,6,2,2,7,8,2,5,3,9);$r = array();foreach($a as $v) {  if(isset($r[$v])) continue;  if($t = array_keys(array_intersect($a, array($v)))) {    unset($t[0]);    $r[$v] = join(',', $t);  }}$r = array_diff($r, array(''));print_r($r);<br><font color="#e78608">------解决方案--------------------</font><br>
로그인 후 복사
PHP code
$arr = array(1,2,2,2,3,4,5,5,5,6,2,2,7,8,2,5,3,9);$str = implode(',', $arr);foreach ($arr as $k=>$v){    $t[$v] .= !isset($t[$v]) ? '' : $k . ',';    $l += strlen($v);    if((strrpos($str, $v.'')) == $l-strlen($v))        $t[$v] = trim($t[$v], ',');    ++$l;}print_r($t);<div class="clear">
                 
              
              
        
            </div>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿