किसी सरणी में उच्चतम मान का रिटर्न इंडेक्स


92

एक सरणी से जो निम्न के जैसा कुछ दिखता है, मैं कैसे सरणी में उच्चतम मूल्य का सूचकांक प्राप्त कर सकता हूं। नीचे दिए गए सरणी के लिए, वांछित परिणाम '11' होगा।

Array (
    [11] => 14
    [10] => 9
    [12] => 7
    [13] => 7
    [14] => 4
    [15] => 6
)

थोड़ी देर हो गई है, लेकिन आपका सरणी पहले से ही क्रमबद्ध (अवरोही) लगता है; या तो यह एक बुरा उदाहरण है या आपको वास्तव में सिर्फ reset($arr); echo key($arr);:) की जरूरत है
Ja 26ck

जवाबों:


209

मेरा समाधान है:

$maxs = array_keys($array, max($array))

नोट:
इस तरह से आपकिसी दिए गए अधिकतम मान से संबंधित हर कुंजी को पुनः प्राप्त कर सकते हैं

यदि आप केवल एक कुंजी में रुचि रखते हैं तो केवल $ अधिकतम का उपयोग करें [0]


कैसे देखें कि दो मूल्य समान हैं?
अल्फामेला

यदि आप दो या दो से अधिक मान रखते हैं, तो परिणाम की जांच कर सकते हैं
जूलियो पॉपकॉटल

@AlphaMale का मतलब है कि आप दो कुंजियों को मान लेते हैं, क्योंकि अधिकतम मान परिभाषा से केवल एक ही है .. @ जस्टिनेई यदि आप डुप्लिकेट कुंजी नहीं चाहते हैं तो बस अधिकतम खोजें (यानी बचें array_keys) और आपको अधिकतम के अनुरूप केवल एक कुंजी मिलेगी। मान
drAlberT

36
<?php

$array = array(11 => 14,
               10 => 9,
               12 => 7,
               13 => 7,
               14 => 4,
               15 => 6);

echo array_search(max($array), $array);

?>

array_search () रिटर्न मान:

यदि यह सरणी, FALSE अन्यथा में पाया जाता है, तो सुई के लिए कुंजी लौटाता है।

यदि सुई एक से अधिक बार धड़ से मिलती है , तो पहली मिलान कुंजी वापस आ जाती है। सभी मिलान मूल्यों के लिए कुंजी वापस करने के लिए, array_keys () के बजाय वैकल्पिक search_value पैरामीटर का उपयोग करें।


12

मुझे पता है कि यह पहले से ही उत्तर दिया गया है, लेकिन यहाँ एक समाधान है जो मुझे और अधिक सुंदर लगता है:

arsort($array);
reset($array);
echo key($array);

और आवाज!


4
resetbtw आवश्यक नहीं है,।
कुरु नको

3

अन्य उत्तरों में कम कोड हो सकता है, लेकिन यह सबसे कुशल होना चाहिए और समझना आसान है।

/**
 * Get key of the max value
 *
 * @var array $array
 * @return mixed
*/
function array_key_max_value($array)
{
    $max = null;
    $result = null;
    foreach ($array as $key => $value) {
        if ($max === null || $value > $max) {
            $result = $key;
            $max = $value;
        }
    }

    return $result;
}

1

कुछ इस तरह से करना चाहिए ट्रिक

function array_max_key($array) {
  $max_key = -1;
  $max_val = -1;

  foreach ($array as $key => $value) {
    if ($value > $max_val) {
      $max_key = $key;
      $max_val = $value;
    }
  }

  return $max_key;
}

3
बेहतर है कि पहले आइटम की कुंजी और मान को डिफ़ॉल्ट मान के रूप में उपयोग करें।
गुम्बो

1

उच्च कुंजी प्राप्त करने के लिए मेरा समाधान इस प्रकार है:

max(array_keys($values['Users']));


0
<?php 
$array =  array (
    '11' => 14,
    '10' => 9,
    '12' => 7,
    '13' => 7,
    '14' => 4,
    '15' => 6
);

foreach ($array as $key => $value) {
   if ($value >= $max) 
        $max = max($array);          
}
echo " The array in Maximum Value :".$max."<br/>";
?> 

-7

Http://www.php.net/manual/en/function.max.php से लिया गया कार्य

function max_key($array) {
    foreach ($array as $key => $val) {
        if ($val == max($array)) return $key; 
    }
}

$arr = array (
    '11' => 14,
    '10' => 9,
    '12' => 7,
    '13' => 7,
    '14' => 4,
    '15' => 6
);

die(var_dump(max_key($arr)));

एक जादू की तरह काम करता है


8
प्रदर्शन के बारे में बोलने के लिए नहीं। सरणी के माध्यम से पहुंचना, हर बार अधिकतम मूल्य की जांच करना "खराब अभ्यास" से भी बदतर है।
बिसको

1
मैंने इसके कार्यान्वयन का उल्लेख नहीं किया। यह एक त्वरित और गंदा कॉपी / पेस्ट था जिसे ओपी स्पष्ट रूप से स्वयं, मिस्टर नहीं कर सकता था।
तैमूर असालिव

3
झूठ बोलने से नहीं, तुमने मुझे थोड़ा चकरा दिया। आप सरणी के माध्यम से प्रत्येक पुनरावृत्ति के लिए अधिकतम () के बारे में चिंतित हैं? यह "बुरे अभ्यास से भी बदतर है"। नहीं, मुझे विश्वास नहीं होता कि यह है। यह सबसे सुरुचिपूर्ण नहीं है, लेकिन यह काम करता है।
सीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.