有没有简单的方法来检查数组中的所有值是否相等?一次检查所有数组值
在这种情况下,它会返回false:
$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'no';
在这种情况下,真正:
$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'yes';
所以,是的,是有一个函数/方法来检查所有数组值在一旦?
在此先感谢!
有没有简单的方法来检查数组中的所有值是否相等?一次检查所有数组值
在这种情况下,它会返回false:
$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'no';
在这种情况下,真正:
$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'yes';
所以,是的,是有一个函数/方法来检查所有数组值在一旦?
在此先感谢!
不是一个单一的功能,但同样可以用轻松实现(?):
count(array_keys($array, 'yes')) == count($array)
从所有提供的解决方案中,这是最容易理解的,提供了大多数功能并且非常简单! +1,已接受。这是'是'检查巨大的奖金。 – jolt 2010-09-30 11:07:11
array_keys确实比array_count_values更好,因为您还可以检查数组/对象元素并在需要时强制进行严格比较 – user187291 2010-09-30 12:11:17
当您的值类似于0时,请不要忘记设置strict参数--- array_keys($ array,0 ,真) – abimelex 2013-03-07 14:35:15
if($a === array_fill(0, count($a), end($a))) echo "all items equal!";
或更好
if(count(array_count_values($a)) == 1)...
另一种可能的选择
if(count(array_unique($array)) == 1)
最优雅,最聪明。当然,'count()'必须是[1]与[array_unique()](http://php.net/manual/en/function.array-unique.php),因为它“返回一个没有重复值的新数组“。 – 2017-09-27 11:12:25
“所有值都相同”相当于“所有值等于第一要素”,所以我会做这样的事情:
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;
}
这里的另一种方式去了解它,使用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()
if(count(array_unique($array)) === count($array)) {
// all items in $array are the same
}else{
// at least one item is different
}
我不认为这是一个非常有趣的问题,但有一个很酷的各种各样的答案。尼斯。 – Hans 2010-09-30 11:09:39
@Hans同意,每一个答案都有它自己独特的转折,非常有趣的结果! – jolt 2010-09-30 11:13:49