2011-08-09 71 views

Trả lời

19
if(max($yourArray) < 5) { 
    //all values in array are less than 5 
} 
+0

+1

+0

Điều tuyệt vời nhất mà không cần sử dụng array_map. –

+0

Vâng, tốt hơn nhiều. – OverZealous

1
function checkArray(&$arr, $max){ 
    foreach($arr as $e){ 
     if($e>$max){ 
      return false; 
     } 
    } 
    return true; 
} 
2

Bạn có thể sử dụng array_filter để chạy một lệnh trên mỗi đối số, và đảm bảo rằng danh sách này là trống rỗng, như vậy:

function greater_than_four($num) { 
    return (int)$num > 4; 
} 

if(array_filter($list, "greater_than_four")) { 
    // INVALID 
} else { 
    // VALID 
} 
2

tại sao bạn không tạo ra chức năng của riêng bạn?

function allunder5(yourarray) { 
    foreach $yourarray as $yournumber { 
     if ($yournumber > 5) { 
      return false 
     } 
    } 
    return true 
} 
2

array_map mà mọi người cho là không được sử dụng nhiều ở đây. array_reduce sẽ là:

array_reduce($array, function ($v, $a) { return $v && $a < 5; }, true) 

Nhưng @ Mchl sử dụng max tất nhiên là tốt nhất.

1

@Mchl đã cung cấp cho bạn giải pháp ngắn gọn và thanh lịch nhất, nhưng tôi đã dành vài phút để tạo một giải pháp một lớp xấu xí và sẽ đăng giải pháp kỳ quặc và đáng sợ của tôi như một sự tò mò hoặc một ví dụ cảnh báo.

function arrayContainsValueOverLimit($arr, $limit) { 
    return ! array_reduce(
        array_map(
         // Closure used with array_map 
         function ($val) use (&$limit) { 
          return $val <= $limit; 
         }, 

         // Values passed into array_map 
         $arr 
        ), 

        // Closure used with array_reduce 
        function ($r, $v) { 
         return $r && $v; 
        }, 

        // Starting value for array_reduce 
        true 
       ); 
}  

var_dump(
    arrayContainsValueOverLimit(
     array(1,1,3,2,1,2,3,2,2,3,3,2,5,1), 
     3 
    ) 
); 

Để biết thêm thông tin về đóng PHP, hãy tham khảo Anonymous functions trong hướng dẫn sử dụng PHP.

+2

Cuộc thi obfuscation là bên cạnh ... ;-P – deceze

+2

@deceze: nếu đây là một câu hỏi perl, tôi chắc chắn rằng chúng tôi sẽ có một số khá regexes để giải quyết vấn đề này đã được. –

+0

khá thú vị :) – dukevin

Các vấn đề liên quan