tất cả các giá trị tương đương với giá trị kiểm tra
if (count(array_unique($allvalues)) === 1 && end($allvalues) === 'true') {
}
hoặc chỉ thử nghiệm cho sự tồn tại của điều bạn không muốn.
if (in_array('false', $allvalues, true)) {
}
Ưu tiên phương pháp sau nếu bạn chắc chắn rằng chỉ có 2 giá trị có thể có trong mảng, vì nó hiệu quả hơn nhiều. Nhưng nếu nghi ngờ, một chương trình chậm là tốt hơn so với một chương trình không chính xác, do đó, sử dụng phương pháp đầu tiên.
Nếu bạn không thể sử dụng phương pháp thứ hai, mảng của bạn rất lớn và nội dung của mảng là có khả năng có nhiều hơn 1 giá trị (đặc biệt là nếu giá trị có khả năng xảy ra gần đầu mảng), nó có thể là nhiều nhanh hơn để làm như sau: "không phải tất cả sự thật"
function isHomogenous($arr) {
$firstValue = current($arr);
foreach ($arr as $val) {
if ($firstValue !== $val) {
return false;
}
}
return true;
}
Giá trị nhận được vào mảng như thế nào? Tại sao không kiểm tra chúng với một sự bình đẳng đơn giản khi chúng được chuyển lên mảng và giảm bớt sự cần thiết cho bất kỳ kiểm tra * thực tế sau * (và do đó, câu hỏi này). Nếu chúng đến từ cơ sở dữ liệu, thao tác này có thể được xử lý ở phía SQL. – rdlowrey