-1

我有这样的数组

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

我只需要使用php代码获取第一个重复值。不要使用php 数组函数。帮帮我,伙计们。所以答案是 - 20。

4

4 回答 4

6

试试看(或者只是做你的功课)

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

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

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

  • 否则,它通过在$seen数组中添加一个条目来标记所看到的值

如果它退出循环,这意味着它没有找到任何出现两次的东西,它会返回false,以便您可以测试=== false以了解是否找到了某些东西。

于 2013-06-21T08:08:57.480 回答
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 变量中获得第一个副本。

于 2013-06-21T08:11:51.310 回答
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;
    }
}
?>
于 2013-06-21T08:10:44.027 回答
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;
}

}
于 2013-06-21T08:09:09.870 回答