如何检查数组是否有多次值

时间:2014-10-07 11:41:17

标签: php arrays

我想查看数组是否多次具有相同的值,例如:

$array=array('val1','val2','val3','val1');

如您所见,在上面的数组中,有2 x val1。 要搜索数组是否包含值,我可以使用in_array:

$search=in_array('val1',$array);

它将返回true,因为val1存在于数组中,但如果多次找到该值,我需要返回true。

5 个答案:

答案 0 :(得分:7)

您可以利用array_keys()的鲜为人知的特性,该特征用于将数组的键作为新数组返回(即没有值。)

它接受一个可选的第二个参数search,它允许您规定您希望只返回其值与您的搜索相对应的那些键。所以:

$arr = array('one', 'two', 'one', 'three');
$indexes = array_keys($arr, 'one'); //array(0, 2)

答案 1 :(得分:2)

通过将search_value作为第二个参数提供给array_keys。该函数将仅返回包含值的数组的键。

$array=array('val1','val2','val3','val1');
$search = array_keys($array, 'val1'); 

供参考, Please READ

答案 2 :(得分:2)

尝试

<?php
$array = array('val1','val2','val3','val1');
$cnt = array_count_values($array);
echo $cnt['val1'];

https://eval.in/202593

答案 3 :(得分:1)

这个功能可以解决问题:

function check_multi($testVal,$arr) {
   foreach($arr as $curVal) {
     $counts[$curVal]++;
   }
   if(isset($counts[$val])
     return $counts[$val];
   else
     return null
}

答案 4 :(得分:1)

尝试this

https://eval.in/202596

echo array_count_values($array)["val1"];

执行this

时,您将获得以下数组