2011-08-09 19 views

答えて

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

+1 <答えようとしていた –

+0

array_mapに頼らずにいいです。 –

+0

ええ、はるかに良い。 – OverZealous

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

です独自の関数を作成しないでください。

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

なぜ:配列内の数字は、あなたがそうのように、各引数上でコマンドを実行して、リストが空であることを確認するためにarray_filterを使用することができます未満5

2

array_map誰もがここであまり使用しないことを示唆しています。 array_reduceは次のようになります。

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

しかしmaxのMCHLの使用はもちろん最高です@。

1

@Mchlはすでにあなたに最も簡潔でエレガントなソリューションを提供しましたが、醜い1ライナーソリューションを作成するのに数分を費やして、好奇心や警告の例として私の風変わりでハッキリな解決策を投稿します。

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 
    ) 
); 

PHPの閉鎖に関する詳しい情報については、PHPマニュアルでAnonymous functionsを参照してください。

+2

難読化コンテストは隣にあります; -P – deceze

+2

@deceze:これはperlの質問だった場合、私はこの問題を解決するためのいくつかのかなりの正規表現を既に持っていると確信しています。 –

+0

かなり興味深い:) – dukevin

関連する問題