计算PHP数组中的重复值

时间:2014-06-12 06:29:37

标签: php mysql arrays

我的问题是,我有这个脚本

foreach ($arr1 as $k => $val) {
    if (in_array($val, $arr2)) {
        echo 'Obsazeno <br>';
    } else {
        echo $val . "<BR>";
    }
}

其中$ arr1生成天数,$ arr2生成mysql结果数组。实际上它工作正常。如果$ arr1中的某一天在数据库中,它将回显“Obsazeno”而不是日值。

但我需要小幅升级。脚本检查$ val是否在$ arr2中并且我需要小计数contidion来执行此操作:

如果 $ val $ arr2 中一次 - 它将回显$ val。

如果 $ val $ arr2 两次 - 它将回显$ val。

但如果 $ val $ arr2 中三次 - 它将回显“Obsazeno”。

我希望你理解我的问题。 我可以通过array_count_values进行搜索。我自己尝试但没有成功。

3 个答案:

答案 0 :(得分:0)

$i=0;
foreach($arr1 as $k=>$val) {
 if(in_array($val,$arr2)) {
   $i++;
   if($i == 3) {
     echo 'Obsazeno <br>';
   }
   else {
      echo $val."<BR>";
   }
 }
}

答案 1 :(得分:0)

您可以使用array_count_values实现此目的。

$values = array_count_values($arr2);
foreach ($arr1 as $k => $val) {
    if (array_key_exists($val, $values) && $values[$val] >= 3) {
        echo 'Obsazeno <br>';
    } else {
        echo $val . '<br>';
    }
}

答案 2 :(得分:0)

$data = array();
foreach($arr1 as $k=>$val)
{
    if(!array_key_exists($val,$data)){
        $data[$val] = 0;
    }
    if(in_array($val,$arr2))
    {
        $data[$val]++;
        if($data[$val]==3){
            echo 'Obsazeno <br>';
        }else{
            echo $val."<BR>";
        }
    }
     else
    {
        echo $val."<BR>";
    }

}