【问题标题】:Count duplicate values in PHP array计算 PHP 数组中的重复值
【发布时间】:2014-06-12 06:29:36
【问题描述】:

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

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

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

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

如果 $val$arr2 中存在一次 - 它会回显 $val。

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

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

希望你能理解我的问题。 我要求,可以通过array_count_values。我自己尝试但没有成功。

【问题讨论】:

  • 您确定$val 中的值相同吗?没有额外的白色间距等?它应该可以工作(没有条件来计数,in_array 在每个循环中返回true
  • 我自己尝试了,但没有成功。 --- 然后告诉我们你到目前为止得到了什么!
  • 是的,我确定。你是对的,它有效,但只适用于一个相同的结果。我需要如果 $val 仅在 $arr2 中出现一次,那没关系,并且脚本 echo $val。如果 $val 在 $arr2 中出现两次或更多(默认为 3),现在它将回显“Obsazeno”。

标签: php mysql arrays


【解决方案1】:

您可以通过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>';
    }
}

【讨论】:

  • 如果 $val 不在 $values 中,这将引发警告。
  • 它不会,因为 array_key_exists 会检查这个,并且只有在第一个条件为真时才会检查第二个条件......
  • 相反,条件之间的“或”会导致警告
  • 这完美!谢谢你,也感谢其他人的帮助
【解决方案2】:

试试

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

【讨论】:

    【解决方案3】:
    $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>";
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2022-01-12
      • 2021-12-10
      • 1970-01-01
      • 2018-09-22
      相关资源
      最近更新 更多