किसी सरणी में उच्चतम कुंजी / अनुक्रमणिका खोजें


92

मैं किसी सरणी में PHP के उच्चतम कुंजी / सूचकांक के साथ कैसे प्राप्त कर सकता हूं? मुझे पता है कि इसे मूल्यों के लिए कैसे करना है।

उदाहरण के लिए इस सरणी से मैं पूर्णांक मान के रूप में "10" प्राप्त करना चाहूंगा:

$arr = array( 1 => "A", 10 => "B", 5 => "C" );

मुझे पता है कि मैं इसे कैसे प्रोग्राम कर सकता हूं, लेकिन मैं खुद से पूछ रहा था कि क्या इसके लिए कोई फ़ंक्शन भी है।

जवाबों:


205

यह ठीक काम करना चाहिए

$arr = array( 1 => "A", 10 => "B", 5 => "C" );
max(array_keys($arr));

क्या आप जानते हैं कि अगर यह एक कुंजी इस तरह से सेट होता है तो काम करेगा: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D ");
राफेल लूथिगर

2
@ राफेल लुथिगर ने इसका परीक्षण करने का प्रयास किया और देखें कि क्या आपको सही परिणाम मिलते हैं।
जोनाथन कुह्न

1
यह एक खाली सरणी के मामले को नहीं संभालता है। सीधे पीएचपी पुस्तिका से के लिए max:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
साइफन


2
$keys = array_keys($arr);
$keys = rsort($keys);

print $keys[0];

"10" प्रिंट करना चाहिए


2

मेरे पास एक ऐसी स्थिति थी जहां मुझे एक सरणी में अगली उपलब्ध कुंजी प्राप्त करने की आवश्यकता थी, जो कि उच्चतम + 1 है।

उदाहरण के लिए, यदि सरणी $ डेटा है = ['1' => 'कुछ', '34 '=>' कुछ और '] तो फिर मुझे उस सरणी में एक नया तत्व जोड़ने के लिए 35 की गणना करने की आवश्यकता है जो कि किसी से भी अधिक महत्वपूर्ण थी। दूसरों का। खाली सरणी के मामले में मुझे अगली उपलब्ध कुंजी के रूप में 1 की आवश्यकता थी।

यह वह उपाय है जो काम करता है:

    $highest = 0;
    foreach($data as $idx=>$dummy)
    {
        if($idx > $highest)$highest=$idx;
    }
    $highest++;

यह सभी मामलों में काम करेगा, खाली सरणी या नहीं। यदि आपको केवल उच्चतम कुंजी + 1 के बजाय उच्चतम कुंजी खोजने की आवश्यकता है, तो अंतिम पंक्ति हटाएं। यदि सरणी खाली है तो आपको 0 का मान मिलेगा।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.