2011-08-09 10 views

Odpowiedz

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

+1

+0

Nice, bez odwoływania się do array_map. –

+0

Tak, znacznie lepiej. – OverZealous

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

można użyć array_filter uruchomić komendę nad każdego argumentu, i upewnić się, że lista jest pusta, tak jak poniżej:

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

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

Dlaczego nie tworzysz swojej własnej funkcji?

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

array_map, które każdy sugeruje, nie ma tu zbyt dużego zastosowania. array_reduce byłoby:

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

Ale @ użytku Mchl dnia max jest oczywiście najlepszy.

1

@Mchl już dał ci najbardziej zwięzłe i eleganckie rozwiązanie, ale poświęciłem kilka minut na stworzenie brzydkiego, jednoliniowego rozwiązania i opublikuję moje dziwaczne i hackowe rozwiązanie jako ciekawostkę lub przykład ostrzegawczy.

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

Aby uzyskać więcej informacji na temat zamknięcia PHP, należy skonsultować się z Anonymous functions w podręczniku PHP.

+2

Konkurs obfuskacji jest tuż obok ... ;-P – deceze

+2

@deceze: jeśli to było pytanie perla, jestem pewien, że mamy już kilka ładnych wyrażeń, aby rozwiązać ten problem. –

+0

całkiem interesujące :) – dukevin

Powiązane problemy