2010-09-30 18 views
8

Dizideki tüm değerlerin birbirine eşit olup olmadığını kontrol etmenin basit bir yolu var mı?Tüm dizi değerlerini aynı anda kontrol etme

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

Ve bu durumda, gerçek:

Bu durumda

, yanlış döneceğini

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

Yani, evet, tüm dizi değerlerini kontrol etmek için bir fonksiyon/metot vardır bir Zamanlar?

Şimdiden teşekkürler!

+0

ben çok ilginç bir soru oldu ama cevapların serin çeşitlilik yoktur düşünmüyordu: hepsi boş dizeler vardı. Güzel. – Hans

+0

@Hans Anlaştık, her cevap kendine özgü bir twist, çok ilginç sonuçlar elde etti! – jolt

cevap

29

Tek bir fonksiyon ancak aynı kolaylıkla elde edilebilir (?):

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

Sağlanan tüm çözümlerden bu, anlaşılması en kolay olanıydı, en işlevselliği sağlıyor ve gerçekten basit! +1 kabul edildi. Bu 'evet' kontrol için büyük ikramiye. – jolt

+0

array_keys array_count_values'den daha iyidir, çünkü dizi/nesne öğelerini kontrol edebilir ve istediğiniz zaman sıkı karşılaştırma uygulayabilirsiniz – user187291

+0

Değeriniz 0 --- array_keys ($ dizi, 0) olduğunda katı parametreyi ayarlamayı unutma , doğru) – abimelex

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

veya daha iyi

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

başka bir olası seçenek

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

En zarif ve en zeki. Tabii ki, "count()" [array_unique()] ile "1" olmalıdır (http://php.net/manual/en/function.array-unique.php) çünkü "yinelenen değerler olmadan yeni bir dizi döndürür" ." –

1

"Tüm değerler aynı", "tüm değerlere eşdeğerdir" İlk eleman" eşit, bu yüzden böyle bir şey yapmak istiyorum:

İşte
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; 
} 
0

listelerinde Benim durumumda

ile array_diff kullanarak bu konuda gitmek için başka bir yol, ben diziler karşı test etmek zorunda

$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() 
0
if(count(array_unique($array)) === count($array)) { 
    // all items in $array are the same 
}else{ 
    // at least one item is different 
}