2

关于比较具有相同值的 2 个数组或检查数组中的值是否存在有很多问题,但我在任何地方都找不到这个问题:

如何检查某个变量/值是否在一个数组中存在两次或更多次?

例如:

$array_to_check = array( "this", "this" , "yes" , "no" , "maybe" , "yes" , "yes" );

$this_value = "this";

// how to check if $this_value or 'this' value exist more than twice in $array_to_check array:
// if it exist more than twice, echo yes it exist more than once!!

也很高兴看看是否有一个可以调用的函数,我可以在其中插入要检查的变量和要检查的数组作为参数,如果变量值在数组中存在两次以上,则返回 true。

例如:

$function check_if_more_than_two($the_variable_to_check, $array_to_check)

太感谢了。任何帮助将非常感激 :)

4

4 回答 4

4

array_keys 函数具有搜索功能

您所要做的就是计算结果的数量

count(array_keys($array_to_check, $this_value));
于 2013-06-08T10:38:34.423 回答
2

借鉴@pvnarula 的答案,但性能有所提高:

function array_has_dupes($array) {
    return count($array) !== count(array_flip($array));
}

array_flip具有“折叠”重复值的便利效果,但无需检查它是否与所有其他值相等。与如何保存、访问数组等有关。但请注意,这仅适用于字符串和/或数字数组,不适用于嵌套数组或更复杂的数组。

性能统计:

  • array_unique: 1,000,000 次迭代在 2.38407087326s
  • array_flip: 1,000,000 次迭代在 1.63431406021s

编辑:重新阅读问题后,我意识到这不是所要求的!不过,知道仍然很有用,所以我会把它留在那里。

至于实际回答问题,array_keys是最好的选择,计算返回的数组并检查它是否至少有 2 个项目:

function array_has_dupes($array,$value) {
    return count(array_keys($array,$value)) > 1;
}
于 2013-06-08T11:13:13.587 回答
1
function check_if_more_than_two($the_variable_to_check, $array_to_check) {
  $values_array= array_count_values($array_to_check);
  if ($values_array[$the_variable_to_check] > 2 ) {
    return true;
  } else {
    return false;
  }
}
于 2013-06-08T10:38:46.800 回答
1

使用 php 函数array_keys。获得所需的输出。

$array_to_check = array( "this", "this" , "yes" , "no" , "maybe" , "yes" , "yes" );

$this_value = "this";

if (count(array_keys($array_to_check, $this_value)) > 2) {

     echo "Yes";
}
于 2013-06-08T10:41:17.757 回答