2011-02-23 18 views
9

क्या एसोसिएटिव सरणी के उच्चतम संख्यात्मक मूल्य प्राप्त करने का कोई आसान तरीका है?एक एसोसिएटिव सरणी का उच्चतम मूल्य

$array = array(
    0 => array(
     'key1' => '123', 
     'key2' => 'values we', 
     'key3' => 'do not', 
     'key4' => 'care about' 
    ), 
    1 => array(
     'key1' => '124', 
     'key2' => 'values we', 
     'key3' => 'do not', 
     'key4' => 'care about' 
    ), 
    2 => array(
     'key1' => '125', 
     'key2' => 'values we', 
     'key3' => 'do not', 
     'key4' => 'care about' 
    ) 
); 

AwesomeFunction($array, 'key1'); // returns 2 ($array key) 

कृपया इस तरह से एक फोन के साथ लिखा गया था, कृपया दयालु रहें। धन्यवाद।

उत्तर

12

यदि आप जानते हैं कि आपका डेटा हमेशा उस प्रारूप में होगा, तो ऐसा कुछ काम करना चाहिए।

function getMax($array) 
{ 
    $max = 0; 
    foreach($array as $k => $v) 
    { 
     $max = max(array($max, $v['key1'])); 
    } 
    return $max; 
} 
+2

आपको दूसरे चर को स्वीकार करने के लिए इसे थोड़ा सा संशोधित करना होगा और अधिकतम मान के बजाय सरणी कुंजी वापस करना होगा। – jeroen

+0

+1 यह ठीक काम करना चाहिए। आप इसे अधिक गतिशील बनाने के लिए पैरामीटर के रूप में 'key1' में भी पास कर सकते हैं। –

1

@ithcy - कि करने के लिए विस्तार किसी भी आकार सरणी के साथ काम करेंगे

function getMax($array) { 
    if (is_array($array)) { 
     $max = false; 
     foreach($array as $val) { 
      if (is_array($val)) $val = getMax($val); 
      if (($max===false || $val>$max) && is_numeric($val)) $max = $val; 
     } 
    } else return is_numeric($array)?$array:false; 
    return $max; 
} 

मुझे लगता है कि (झूठे रिटर्न जब कोई संख्यात्मक मान पाए जाते हैं)

11

पीएचपी 5.5 की शुरुआत की array_column() जो यह बहुत आसान बनाता है:

echo max(array_column($array, 'key1')); 

Demo

0

यह एक इथसी उदाहरण से प्रेरित है, लेकिन आप देखने के लिए कुंजी सेट कर सकते हैं। इसके अलावा, यह न्यूनतम और अधिकतम मूल्य दोनों देता है।

function getArrayLimits($array, $key) { 
    $max = -PHP_INT_MAX; 
    $min = PHP_INT_MAX; 
    foreach($array as $k => $v) { 
     $max = max($max, $v[$key]); 
     $min = min($min, $v[$key]); 
    } 
    return Array('min'=>$min,'max'=>$max); 
} 
+0

जब आप एक निर्मित PHP फ़ंक्शन का उपयोग कर सकते हैं तो लूप का उपयोग क्यों करें? –

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