2010-09-30 35 views
8

Có cách nào đơn giản để kiểm tra xem tất cả các giá trị trong mảng có bằng nhau không?Kiểm tra tất cả các giá trị mảng cùng một lúc

Trong trường hợp này, nó sẽ trả về false:

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

Và trong trường hợp này, đúng:

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

Vì vậy, yeah, là có một chức năng/phương pháp để rà soát tất cả các giá trị mảng tại Một lần?

Cảm ơn trước!

+0

tôi không nghĩ đó là một câu hỏi rất thú vị nhưng có nhiều mát mẻ của câu trả lời. Tốt đẹp. – Hans

+0

@Hans Đồng ý, mọi câu trả lời đều có những bước ngoặt độc đáo riêng, kết quả rất thú vị! – jolt

Trả lời

29

Không phải là một chức năng duy nhất, nhưng cùng có thể đạt được một cách dễ dàng với (?):

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

Từ tất cả các giải pháp được cung cấp, đây là cách dễ hiểu nhất, cung cấp hầu hết các chức năng và thực sự đơn giản! 1, được chấp nhận. Tiền thưởng lớn cho kiểm tra 'có' đó. – jolt

+0

array_keys thực sự tốt hơn array_count_values, bởi vì bạn cũng có thể kiểm tra các phần tử mảng/đối tượng và thực thi so sánh nghiêm ngặt khi mong muốn – user187291

+0

đừng quên đặt tham số nghiêm ngặt khi giá trị của bạn giống 0 --- array_keys ($ array, 0 , true) – abimelex

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

hoặc tốt hơn

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

một lựa chọn tốt

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

Trang nhã và thông minh nhất. Tất nhiên, 'count()' phải là '1' với [array_unique()] (http://php.net/manual/en/function.array-unique.php) bởi vì nó" trả về một mảng mới mà không có giá trị trùng lặp . " –

1

"Tất cả các giá trị giống nhau" tương đương với "tất cả các giá trị tương đương với phần tử đầu tiên", vì vậy tôi muốn làm một cái gì đó như thế này:

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

Dưới đây là một cách khác để đi về nó, sử dụng array_diff với danh sách

Trong trường hợp của tôi, tôi đã phải kiểm tra đối với mảng mà đã có tất cả các chuỗi rỗng:

$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 
} 
Các vấn đề liên quan