有沒有簡單的方法來檢查數組中的所有值是否相等?一次檢查所有數組值
在這種情況下,它會返回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