使用php从数组中首先重复值

时间:2013-06-21 08:04:38

标签: php arrays

我有这样的数组

$arr = array(10, 20, 50, 80, 20, 10, 30);

我只需要使用 php 代码获得第一个重复值。不要使用 php array 功能。帮帮我们 所以 ans 是 - 20.

4 个答案:

答案 0 :(得分:6)

尝试(或只是做功课)

function do_your_homework($arr) {
    $seen = [];
    foreach($arr as $a) {
        if (isset($seen[$a])) return $a;
        $seen[$a] = 1;
    }
    return false;
}

它使用$seen数组来存储已经看到的值(首先为空)。然后,对于输入数组$arr中的每个值,它检查是否已经看到该值:

  • 如果已经看到,那么这是第二次出现的值,它找到了它正在查找的内容并返回值

  • 否则通过在$seen数组中添加条目

  • 来标记值

如果它不在循环中,这意味着它没有找到任何两个出现的内容,它会返回false,因此您可以测试=== false以了解是否找到了某些内容。< / p>

答案 1 :(得分:4)

试试这个

$arr = array(10, 20, 50, 80, 20, 10, 30);
$new_arr= array();

for($i=0;$i<count($arr);$arr++)
{
    if(in_array($arr[$i],$new_arr))
    {
        $dup = $arr[$i]; break; 
    }
    else
    {
        $new_arr[$i] = $arr[$i];
    }
} 

您将在$ dup变量中获得第一个副本。

答案 2 :(得分:1)

试试这个:

<?php

$arr = array(10, 20, 50, 80, 20, 10, 30);

echo get_first_repeated($arr);

function get_first_repeated($array){
    $junk=array();
    foreach( $array as $v){
        if(in_array($v , $junk)){
            return $v;
        }
        $junk[] = $v;
    }
}
?>

答案 3 :(得分:0)

function getfirstdup()
{

$arr = (10, 20, 50, 80, 20, 10, 30);
$count = array();    

foreach ($arr as $ar) {
    if (isset($count[$ar])) return $ar;

    $count[$ar] = 1;
}

}