一次检查所有数组值

时间:2010-09-30 10:41:32

标签: php arrays

有没有一种简单的方法来检查数组中的所有值是否彼此相等?

在这种情况下,它将返回false:

$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'no';

在这种情况下,确实如此:

$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'yes';

所以,是的,是否有一个函数/方法可以立即检查所有数组值?

提前致谢!

6 个答案:

答案 0 :(得分:31)

不是单一功能,但可以通过以下方式轻松实现(?):

count(array_keys($array, 'yes')) == count($array)

答案 1 :(得分:9)

另一种可能的选择

if(count(array_unique($array)) == 1)

答案 2 :(得分:2)

if($a === array_fill(0, count($a), end($a))) echo "all items equal!";

或更好

if(count(array_count_values($a)) == 1)...

答案 3 :(得分:1)

“所有值相同”相当于“所有值等于第一个元素”,所以我会做这样的事情:

function array_same($array) {
  if (count($array)==0) return true;

  $firstvalue=$array[0];
  for($i=1; $i<count($array); $i++) {
      if ($array[$i]!=$firstvalue) return false;
  }
  return true;
}

答案 4 :(得分:0)

这是另一种方法,使用array_diff列表

在我的情况下,我必须测试具有所有空字符串的数组:

$empty_array = array('','','');  // i know ahead of time that array has three elements
$array_2d = array();
for($array_2d as $arr)
  if(array_diff($arr,$empty_arr)) // 
       do_stuff_with_non_empty_array()  

答案 5 :(得分:0)

if(count(array_unique($array)) === count($array)) {  
  // all items in $array are the same
}else{
  // at least one item is different
}