首頁 > 後端開發 > php教程 > 2000条数据的数组,找出有重复值的索引

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

WBOY
發布: 2016-06-13 13:20:26
原創
816 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板