PHP द्वि-आयामी सहयोगी सरणी में न्यूनतम और अधिकतम मान प्राप्त करें। न्यूनतम - सरणी में न्यूनतम मानों की संख्या सबसे छोटा Php मान ढूँढता है

(पीएचपी 4, पीएचपी 5, पीएचपी 7)

मिनट - सबसे छोटा मान ज्ञात करता है

विवरण

यदि केवल एक तर्क पारित किया जाता है - संख्याओं की एक सरणी, मिनट()उनमें से सबसे छोटा लौटाता है। यदि पहला तर्क एक पूर्णांक या फ़्लोट है, तो कम से कम एक और होना चाहिए। इस मामले में फ़ंक्शन मिनट()उनमें से सबसे छोटे को वापस कर देंगे.

टिप्पणी:

मानक तुलना नियमों का उपयोग करके विभिन्न प्रकार के मूल्यों की तुलना की जाती है। उदाहरण के लिए, एक गैर-संख्यात्मक स्ट्रिंग ( डोरी) की तुलना एक पूर्णांक से की जाएगी ( पूर्णांक) मानो यह बराबर हो 0 , लेकिन कई पंक्तियाँ ( डोरी) की तुलना वर्णानुक्रम से की जाएगी। रिटर्न मान परिवर्तन के बिना, वेरिएबल के मूल प्रकार को बनाए रखेगा।

मान लौटाएँ

समारोह मिनट()उस पैरामीटर का मान लौटाता है जिसे मानक तुलना नियमों के अनुसार "सबसे छोटा" माना जाता है। यदि विभिन्न प्रकार के कई मान एक दूसरे के बराबर हैं (अर्थात 0 और "एबीसी"), तो पहला वापस कर दिया जाएगा।

उदाहरण

उदाहरण #1 उपयोग उदाहरण मिनट()

प्रतिध्वनि मिनट(2, 3, 1, 6, 7); // 1
प्रतिध्वनि मिनट (सरणी(2 , 4 , 5 )); // 2

// स्ट्रिंग "हैलो", जब int के साथ तुलना की जाती है, तो उसे 0 माना जाता है
// चूंकि दोनों मान समान हैं, मापदंडों का क्रम परिणाम निर्धारित करता है
इको मिनट(0, "हैलो"); // 0
इको मिन ("हैलो" , 0 ); // नमस्ते

// यहां हम -1 की तुलना करते हैं< 0, поэтому -1 является наименьшим значением
इको मिन ("हैलो" , - 1 ); // -1

// विभिन्न लंबाई के सरणियों की तुलना करते समय, न्यूनतम छोटा वाला लौटाएगा
$वैल = मिनट (सरणी(2 , 2 , 2 ), सरणी(1 , 1 , 1 , 1 )); // सरणी(2, 2, 2)

// समान लंबाई के एकाधिक सरणियों की तुलना बाएं से दाएं की जाती है
// इस उदाहरण के लिए: 2 == 2, लेकिन 4< 5
$वैल = न्यूनतम (सरणी(2 , 4 , 8 ), सरणी(2 , 5 , 1 )); // सरणी(2, 4, 8)

// यदि किसी सरणी और गैर-सरणी की तुलना की जाती है, तो सरणी कभी वापस नहीं की जाएगी
// चूंकि सरणियों को अन्य सभी मानों से बड़ा माना जाता है
$वैल = मिनट ("स्ट्रिंग" , सरणी(2 , 5 , 7 ), 42 ); //डोरी

// यदि एक तर्क शून्य या बूलियन है, तो इसकी तुलना दूसरों से की जाएगी
// गलत नियम का उपयोग करना< TRUE, учитывая остальные типы аргументов
// दिए गए उदाहरण में, -10 और 10 को सत्य माना जाता है
$वैल = मिनट (- 10 , गलत , 10 ); // असत्य
$वैल = मिनट (- 10 , शून्य , 10 ); // व्यर्थ

// दूसरी ओर, 0 को गलत माना जाता है, इसलिए यह सत्य से "कम" है
$वैल = न्यूनतम(0, सत्य); // 0
?>

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

PHP में एक-आयामी सरणी का सबसे बड़ा और सबसे छोटा मान ढूँढना

सभी सरणियाँ अपनी संरचना में भिन्न होती हैं। दो सरल एक-आयामी सरणियों पर विचार करें, जिनमें से एक में कुंजियाँ नहीं हैं:

$my_array = सारणी(22, 24, 37, 74, 23, 2, 10);

और एक पिछले वाले के समान, लेकिन कुंजियों के साथ:

$my_array = सारणी(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

आइए इस सरणी के अधिकतम और न्यूनतम मान प्रदर्शित करने का प्रयास करें। ऐसा करने के लिए हम मानक फ़ंक्शंस का उपयोग करेंगे " अधिकतम" और " मिन" क्रमश:

इको मैक्स($my_array); // 74 इको मिनट प्रिंट करें($my_array); //प्रिंट 2

यदि हम दूसरे एरे पर करीब से नज़र डालें तो परिणामस्वरूप हमें अधिकतम या न्यूनतम मानों की कुंजी मिल सकती है।

एक उदाहरण के रूप में एक सरणी का उपयोग करना

$my_array = सारणी(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

यह इस तरह दिखेगा:

$अधिकतम = array_keys($my_array, अधिकतम($my_array)); $max = $max;// अधिकतम मान कुंजी $min = array_keys($my_array, min($my_array)); $मिनट = $मिनट; // न्यूनतम मूल्य कुंजी प्रतिध्वनि $अधिकतम; // अधिकतम मूल्य का परिणाम प्रिंट करें

तदनुसार, अधिकतम मान कुंजी "4" है, और न्यूनतम मान "6" है।

PHP में बहुआयामी सरणी का सबसे बड़ा और सबसे छोटा मान ढूँढना

बहुआयामी सरणियाँ उनके नेस्टिंग द्वारा भिन्न होती हैं। उदाहरण के लिए, एक द्वि-आयामी सरणी कुंजियों के बिना इस तरह दिखेगी:

$my_array = सारणी(सरणी(22, 24, 37), सारणी(74, 23, 2), सारणी(10));

और, तदनुसार, कुछ कुंजियों के साथ:

$my_array = सरणी(सरणी(1 => 22, 2 => 24, 3 => 37), सरणी(4 => 74, 5 => 23, 6 => 2), सरणी(7 => 10));

इस मामले में, अधिकतम और न्यूनतम मान ज्ञात करना थोड़ा कठिन है, लेकिन संभव भी है।

सबसे पहले, यहां अधिकतम और न्यूनतम खोजने के लिए, हम सरणी को एक-आयामी में बदलते हैं:

$out_array = सारणी(); foreach($my_array as $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

डिज़ाइन उपरोक्त दोनों विकल्पों के लिए काम करता है। और फिर, एक-आयामी सरणी के उदाहरण का अनुसरण करते हुए, हम वह डेटा प्रदर्शित करेंगे जिसकी हमें आवश्यकता है:

इको मैक्स ($out_array); // 74 इको मिनट प्रिंट करें($out_array); //प्रिंट 2

एक छोटे से बोनस के रूप में, मैं एक अन्य लोकप्रिय द्वि-आयामी सरणी का उदाहरण दूंगा:

$my_array = array(array("id" => "1", "date" => "2018-03-19", "price" => "5",), array ("id" => "2" , "दिनांक" => "2018-03-19", "कीमत" => "50",), सरणी ("आईडी" => "3", "दिनांक" => "2018-03-19", " कीमत" => "25",));

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

इस मामले में पहली चीज़ जो आपको चाहिए वह है केवल इस डेटा के साथ एक नई सरणी प्राप्त करना:

$नंबर = array_column($my_array, "कीमत");

इको मिन($संख्या); // 5 इको मैक्स ($ संख्याएं) प्रिंट करें; // प्रिंट 50

यह PHP में arrays के साथ काम पूरा करता है। यदि अचानक आपकी सरणी की संरचना भिन्न हो और आप नहीं जानते कि इसे कैसे संसाधित किया जाए, तो टिप्पणियों में उचित प्रश्न पूछें, मैं आपकी सहायता करने का प्रयास करूंगा।

जावास्क्रिप्ट में एक-आयामी सरणी का सबसे बड़ा और सबसे छोटा मान ढूँढना

PHP के विपरीत, जावास्क्रिप्ट में सरणियों का प्रकार बहुत सरल है, और एक सरल एक-आयामी सरणी इस तरह दिखेगी:

वर my_array = ;

यहां कोई सूचकांक नहीं दर्शाया गया है. इस सरणी में अधिकतम और न्यूनतम मान ज्ञात करने के लिए, हम अपने स्वयं के दो सरल कार्य लिखेंगे:

फ़ंक्शन arrayMax(array) ( return array.reduce(function(a, b) ( return Math.max(a, b); )); ) function arrayMin(array) ( return array.reduce(function(a, b) ( वापसी Math.min(ए, बी); )); )

जिनका उपयोग हमें आवश्यक मूल्यों को खोजने के लिए किया जाता है। उपयोग भी सरल है:

चेतावनी(arrayMax(my_array)); // प्रिंट 74 अलर्ट(arrayMin(my_array)); //प्रिंट 2

इस स्थिति में, संख्या "2" और "74" को स्क्रीन पर सरणी के न्यूनतम और अधिकतम मान के रूप में प्रदर्शित किया जाएगा।

जावास्क्रिप्ट में बहुआयामी सरणी का सबसे बड़ा और सबसे छोटा मान ढूँढना

जावास्क्रिप्ट में बहुआयामी सरणियाँ बिल्कुल सरल हैं, और वे इस तरह दिखती हैं:

वर my_array = [ , , ];

आइए यहां अधिकतम और न्यूनतम खोजने का प्रयास करें। आरंभ करने के लिए, हम एक फ़ंक्शन लिखेंगे जिसके साथ, जिस योजना से हम पहले से परिचित हैं, उसके अनुसार हम इस सरणी को एक-आयामी के रूप में प्रस्तुत करेंगे:

वार आउट_अरे = ; my_array.forEach(function(v) ( Array.prototype.push.apply(out_array, v); ));

और वस्तु का उपयोग करना " गणित"हमें वे मूल्य मिलते हैं जिनकी हमें आवश्यकता होती है:

वार मिनट = Math.min.apply(null, out_array); // 2 var max प्राप्त करें = Math.max.apply(null, out_array); // 74 अलर्ट प्राप्त करें (अधिकतम); // स्क्रीन पर 74 प्रिंट करें

वास्तव में, वस्तु के बजाय " गणित“आप संस्करण में प्रयुक्त हमारे फ़ंक्शंस का उपयोग एक-आयामी सरणी के साथ कर सकते हैं, लेकिन ताकि आप समझ सकें कि किसी भी समस्या को कई तरीकों से हल किया जा सकता है - यहां मैंने थोड़ा अलग समाधान दिया है।

खैर, परंपरा के अनुसार - एक छोटा सा बोनस। आइए निम्नलिखित संरचना के साथ एक और बहुआयामी सरणी पर विचार करें:

वर माय_एरे = [["एक", "2018-03-19", 5], ["दो", "2018-03-19", 50], ["तीन", "2018-03-19", 25 ], ];

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

वर मिन = +अनंत; वर अधिकतम = -अनंतता; my_array.forEach(function(आइटम) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >अधिकतम) (अधिकतम =+ आइटम; // अधिकतम मूल्य की तलाश में))); चेतावनी(न्यूनतम+" "+अधिकतम); // स्क्रीन पर परिणाम प्रदर्शित करें

बस इतना ही। परियोजना का समर्थन करना न भूलें. आगे बहुत सारी दिलचस्प चीज़ें आपका इंतज़ार कर रही हैं!

मेरे पास इस प्रारूप में एक सरणी है:

सारणी (=> सारणी (=> 117 => नेटवर्किंग => 16) => सारणी (=> 188 => एफ़टीपी => 23) => सारणी (=> 189 => इंटरनेट => 48))

क्या "गिनती" के न्यूनतम और अधिकतम मान प्राप्त करने का कोई अच्छा तरीका है? मैं कई लूपों का उपयोग करके ऐसा कर सकता था, लेकिन मैंने सोचा कि एक बेहतर तरीका हो सकता है।

दूसरों के विपरीत, आप इस समस्या के लिए min() / max() फ़ंक्शंस का उपयोग नहीं कर सकते, क्योंकि ये फ़ंक्शंस उन्हें दिए गए डेटा (सरणी) के सरणियों को नहीं समझते हैं। ये फ़ंक्शन केवल स्केलर सरणी तत्वों के लिए काम करते हैं।

प्रारंभ छवि

न्यूनतम() और अधिकतम() का उपयोग सही उत्तर देने का कारण यह है कि सरणी पूर्णांक में टाइप-कास्टिंग कर रही है, जो अपरिभाषित व्यवहार है:

पूर्णांक में रूपांतरण व्यवहार अन्य प्रकारों के लिए परिभाषित नहीं है। किसी भी देखे गए व्यवहार पर भरोसा न करें क्योंकि यह बिना किसी चेतावनी के बदल सकता है।

टाइप-कास्टिंग के बारे में मेरा उपरोक्त कथन गलत था। वास्तव में न्यूनतम() और अधिकतम() सरणियों के साथ काम करते हैं, लेकिन उस तरह से नहीं जिस तरह से ओपी को उन्हें काम करने की आवश्यकता होती है। एकाधिक सरणियों या सरणी तत्वों की एक सरणी के साथ न्यूनतम() और अधिकतम() का उपयोग करते समय, बाएं से दाएं तत्व द्वारा तत्व की तुलना करें:

$वैल = न्यूनतम(सरणी(2, 4, 8), सारणी(2, 5, 1)); // सरणी(2, 4, 8) /* * पहले तत्व की तुलना में पहला तत्व: 2 == 2 * दूसरे तत्व की तुलना में दूसरा तत्व: 4< 5 * first array is considered the min and is returned */

समस्या में अनुवादित, ओपी दिखाता है कि सीधे min() और max() का उपयोग करने से सही परिणाम क्यों मिलता है। सरणी के पहले तत्व id हैं, इसलिए min() और max() पहले उनकी तुलना करते हैं, जिससे सही परिणाम मिलता है, क्योंकि सबसे कम id वह है जिसकी गिनती सबसे कम है और उच्चतम id वह है जिसकी गिनती सबसे ज्यादा है.

अंत संपादित करें

लूप का उपयोग करना सही तरीका है।

$ए = सरणी(सरणी("आईडी" => 117, "नाम" => "नेटवर्किंग", "गिनती" => 16), सरणी("आईडी" => 188, "नाम" => "एफ़टीपी", " गिनती" => 23), सरणी("आईडी" => 189, "नाम" => "इंटरनेट", "गिनती" => 48)); $मिनट = PHP_INT_MAX; $अधिकतम = 0; foreach ($a as $i) ($min = min($min, $i["गिनती"]); $max = max($max, $i["गिनती"]); )

आप अधिकतम() और न्यूनतम() फ़ंक्शंस का उपयोग कर सकते हैं।

आपने एकाधिक लूप के साथ क्या किया? एक पर्याप्त है :)

  1. $min और max दोनों की गिनती गिनकर पहला तत्व प्राप्त करें
  2. बाकी पर पुनरावृति करें, प्रत्येक $min और $max के साथ गिनती की तुलना करें, यदि कम/अधिक है तो एक नया गिनती मान निर्दिष्ट करें

आप अधिकतम/न्यूनतम फ़ंक्शंस का उपयोग कर सकते हैं क्योंकि वे प्रत्येक इंडेक्स की अधिकतम/न्यूनतम युक्त एक सरणी लौटाएंगे। आपके उदाहरण को अधिकतम के लिए array(189, "नेटवर्किंग", 48) लौटाना चाहिए। फिर आप इस सारणी से स्कोर प्राप्त कर सकते हैं।

इसे अपडेट करना काम नहीं करेगा क्योंकि मैंने इसे खारिज कर दिया है। मैन पेज उदाहरण भ्रामक है और उदाहरण मैक्स का उपयोग करके सही परिणाम देता है, लेकिन यह सिर्फ एक संयोग है।

ऐसा लगता है कि आप 2D सरणी पर max() का उपयोग नहीं कर सकते। यह प्रत्येक सूचकांक के max() के बजाय केवल सबसे बड़ा सरणी लौटाता है (जैसा कि कई उत्तरों में बताया गया है)।

$गिनती = सरणी(); foreach($arr as $_arr) ($count = $_arr["count"]; ) var_dump(max($count), min($count));

क्या कोई समकक्ष है निर्मित मेंइसके लिए कार्य करें? (संभावना के बिना भी परिक्षण)

/** * दूसरे कॉलम पर वैकल्पिक चयन के साथ 2D सरणी से एक कॉलम पुनर्प्राप्त करता है * * @param $ aArray से पुनर्प्राप्त करने के लिए * @param $ aColName पुनर्प्राप्त करने के लिए कॉलम का नाम, उदाहरण के लिए। "O_NAME" * @param $aColTest (वैकल्पिक) परीक्षण चलाने के लिए कॉलम नाम, उदा. परीक्षण के लिए "O_ID" * @param $aTest (वैकल्पिक) स्ट्रिंग। ">=10", "== "". aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ परीक्षण। ";"))) ( $ mRes = $ पंक्ति [$ aColName]; ) ) वापसी $ mRes; ) // निकालेंColFromArray