2011-08-09 12 views
7

से कम हैं या नहीं?PHP: यह देखने के लिए जांचें कि किसी सरणी में सभी मान x

उदाहरण के लिए यदि मेरे पास 1,1,3,2,1,2,3,2,2,3,3,2,5,1 की तरह एक सरणी है तो फ़ंक्शन सही हो जाना चाहिए यदि केवल और केवल

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

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

उत्तर

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 पहले से ही आपको सबसे संक्षिप्त और सुरुचिपूर्ण समाधान प्रदान करता है, लेकिन मैंने बदसूरत एक-लाइनर समाधान बनाने के लिए कुछ मिनट बिताए और जिज्ञासा या चेतावनी उदाहरण के रूप में मेरे क्विर्की और हैकिश समाधान पोस्ट करेंगे।

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

पीएचपी बंद के बारे में अधिक जानकारी के लिए, पीएचपी के मैनुअल में Anonymous functions से परामर्श करें।

+2

obfuscation प्रतियोगिता अगले दरवाजे है ... ;-P – deceze

+2

@deceze: यदि यह एक perl सवाल थे, तो मुझे यकीन है कि हम पहले से ही इस समस्या को हल करने के लिए कई सुंदर regexes होगा। –

+0

काफी रोचक :) – dukevin

संबंधित मुद्दे