对PHP数组中的重复值进行计数

对PHP数组中的重复值进行计数,php,mysql,arrays,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而

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

foreach ($arr1 as $k => $val) {
    if (in_array($val, $arr2)) {
        echo 'Obsazeno <br>';
    } else {
        echo $val . "<BR>";
    }
}
其中,$arr1是由天生成的数组,$arr2是由mysql结果生成的数组。实际上它工作得很好。若数据库中有$arr1中的某一天,它将回显Obsazeno而不是day值

但我需要小的升级。脚本检查$val是否在$arr2中,我需要一个小的计数控件来执行此操作:

如果$val在$arr2中出现一次,它将回显$val

如果$val在$arr2中出现两次,它将回显$val

但如果$val三次出现在$arr2中,它将响应Obsazeno

我希望你能理解我的问题。 我的任务是,可以通过数组计数值来实现。我自己试过,但没有成功

试试看

$i=0;
foreach($arr1 as $k=>$val) {
 if(in_array($val,$arr2)) {
   $i++;
   if($i == 3) {
     echo 'Obsazeno <br>';
   }
   else {
      echo $val."<BR>";
   }
 }
}
您可以通过以下方式实现这一点


您确定$val中的值相同吗?没有额外的白色间隔等。?它应该可以工作-没有条件值count,并且在每个循环中in_数组返回true。我自己尝试了,但没有成功。-然后向我们展示您到目前为止得到了什么!是的,我确定。你是对的,它是有效的,但只有一个相同的结果。我需要的是,如果$val只在$arr2中出现一次,它是ok的,脚本echo$val。如果$val在$arr2中出现两次或更多次,默认值3现在将回显Obsazeno。如果$val不在$values中,这将引发警告。它不会,因为array_key_exists将检查此项,而第二个条件仅在第一个条件为真时才被检查…相反,条件之间的OR将导致警告此项工作正常!谢谢你,也谢谢其他人的帮助
$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>';
    }
}
$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>";
    }

}