ホームページ >バックエンド開発 >PHPチュートリアル >2000 データの配列。重複する値を持つインデックスを検索します。

2000 データの配列。重複する値を持つインデックスを検索します。

WBOY
WBOYオリジナル
2016-06-13 13:20:26823ブラウズ

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
....

コストが高すぎるため、二重の for または while ループは使用できません。

--解決策- --- ----------------

PHP コード

$arr = 配列(1,2,2,2,3,4,5,5,5,6,2,2,7,8,2,5,3,9);
$tmp = 配列();

foreach($arr AS $k => $v)
{
    if(isset($tmp[$v]))
    {
        if($tmp[$v])
        {
            $tmp[$v] .= ",";
        }
        $tmp[$v] .= $k;
    }
    それ以外
    {
        $tmp[$v] = "";
    }
}
foreach($tmp AS $k => $v)
{
    if($v)
    {
        echo $k, "=>", $v, "n";
    }
}
設定を解除($tmp);
<br><font color="#e78608">------解決策------------------</font><br>
PHP コード
$a = 配列(1,2,2,2,3,4,5,5,5,6,2,2,7,8,2,5,3,9);
$r = 配列();
foreach($a として $v) {
  if(isset($r[$v])) 続行;
  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 コード

$arr = 配列(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] = トリム($t[$v], ',');
    ++$l;
}
print_r($t); <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。