有没有一种简单的方法来检查数组中的所有值是否彼此相等?
在这种情况下,它将返回false:
$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'no';
在这种情况下,确实如此:
$array[0] = 'yes';
$array[1] = 'yes';
$array[2] = 'yes';
所以,是的,是否有一个函数/方法可以立即检查所有数组值?
提前致谢!
答案 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
}