PHP Ստացեք նվազագույն և առավելագույն արժեքները երկչափ ասոցիատիվ զանգվածում: Min - Գտնում է ամենափոքր Php արժեքը զանգվածի նվազագույն արժեքների քանակը

(PHP 4, PHP 5, PHP 7)

րոպե — Գտնում է ամենափոքր արժեքը

Նկարագրություն

Եթե ​​փոխանցվի միայն մեկ արգումենտ՝ թվերի զանգված, րոպե ()վերադարձնում է դրանցից ամենափոքրը: Եթե ​​առաջին արգումենտը ամբողջ թիվ է կամ լողացող, ապա պետք է լինի առնվազն ևս մեկը: Այս դեպքում գործառույթը րոպե ()կվերադարձնի դրանցից ամենափոքրը:

Մեկնաբանություն:

Տարբեր տեսակների արժեքները համեմատվում են ստանդարտ համեմատության կանոնների միջոցով: Օրինակ՝ ոչ թվային տող ( լար) կհամեմատվի ամբողջ թվի հետ ( ամբողջ թիվ) ոնց որ հավասար լինի 0 , բայց մի քանի տող ( լար) կհամեմատվեն այբբենական կարգով: Վերադարձված արժեքը կպահպանի փոփոխականի սկզբնական տեսակը՝ առանց փոխակերպման։

Վերադարձի արժեքներ

Գործառույթ րոպե ()վերադարձնում է այն պարամետրի արժեքը, որը համարվում է «ամենափոքրը» ըստ ստանդարտ համեմատության կանոնների: Եթե ​​տարբեր տեսակի մի քանի արժեքներ հավասար են միմյանց (այսինքն. 0 Եվ «abc»), ապա առաջինը կվերադարձվի։

Օրինակներ

Օրինակ #1 Օգտագործման օրինակ րոպե ()

echo min (2, 3, 1, 6, 7); // 1
echo min (զանգված (2, 4, 5)); // 2

// «բարև» տողը, երբ համեմատվում է int-ի հետ, դիտվում է որպես 0
// Քանի որ երկու արժեքներն էլ հավասար են, պարամետրերի կարգը որոշում է արդյունքը
echo min (0, «բարև»); // 0
echo min («բարև», 0); // Բարեւ

// Այստեղ մենք համեմատում ենք -1< 0, поэтому -1 является наименьшим значением
echo min («բարև», - 1); // -1

// Տարբեր երկարությունների զանգվածները համեմատելիս min կվերադարձնի ավելի կարճը
$val = min (զանգված (2, 2, 2), զանգված (1, 1, 1, 1)); // զանգված (2, 2, 2)

// Նույն երկարությամբ բազմաթիվ զանգվածներ համեմատվում են ձախից աջ
// այս օրինակի համար՝ 2 == 2, բայց 4< 5
$val = min (զանգված (2, 4, 8), զանգված (2, 5, 1)); // զանգված (2, 4, 8)

// Եթե զանգվածը և ոչ զանգվածը համեմատվում են, զանգվածը երբեք չի վերադարձվի
// քանի որ զանգվածները համարվում են ավելի մեծ, քան մյուս բոլոր արժեքները
$val = min ("string", array(2, 5, 7), 42); // տող

// Եթե մի արգումենտ NULL կամ բուլյան է, այն կհամեմատվի մյուսների հետ
// օգտագործելով FALSE կանոնը< TRUE, учитывая остальные типы аргументов
// Տրված օրինակում -10-ը և 10-ը համարվում են ՃԻՇՏ
$val = min (- 10, FALSE, 10); // ՍՈՒՏ
$val = min (- 10, NULL, 10); // ԴԱՏԱՐԿ

// մյուս կողմից, 0-ը համարվում է FALSE, ուստի այն «պակաս» է, քան TRUE
$val = min(0, TRUE); // 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);

Փորձենք ցուցադրել այս զանգվածի առավելագույն և նվազագույն արժեքները: Դա անելու համար մենք կօգտագործենք ստանդարտ գործառույթներ " առավելագույնը«Եվ» ր«համապատասխանաբար.

Echo max ($my_array); // Տպել 74 echo min ($my_array); // Տպել 2

Եթե ​​ավելի ուշադիր նայենք երկրորդ զանգվածին, ապա արդյունքում կարող ենք ստանալ առավելագույն կամ նվազագույն արժեքների բանալին։

Օգտագործելով զանգված որպես օրինակ

$my_array = զանգված (1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

այն կունենա հետևյալ տեսքը.

$max = array_keys ($my_array, max ($my_array)); $max = $max;// Առավելագույն արժեքի բանալի $min = array_keys($my_array, min($my_array)); $min = $min; // Նվազագույն արժեքի ստեղն echo $max; // Տպել առավելագույն արժեքի արդյունքը

Համապատասխանաբար, առավելագույն արժեքի բանալին «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 որպես $sub_array) ( $out_array = array_merge ($out_array, $sub_array);)

Դիզայնն աշխատում է վերը նշված երկու տարբերակների համար: Եվ հետո, հետևելով միաչափ զանգվածի օրինակին, մենք կցուցադրենք մեզ անհրաժեշտ տվյալները.

Echo max ($ out_array); // Տպել 74 echo min($out_array); // Տպել 2

Որպես փոքր բոնուս, ես կտամ մեկ այլ հայտնի երկչափ զանգվածի օրինակ.

$my_array = զանգված (զանգված («id» => «1», «ամսաթիվ» => «2018-03-19», «price» => «5»,), զանգված («id» => «2» , "date" => "2018-03-19", "price" => "50",), զանգված ("id" => "3", "date" => "2018-03-19", " գին» => «25»));

Հանրաճանաչություն ասելով նկատի ունեմ ոչ թե բովանդակությունը, այլ դրա կառուցվածքի օրինակը։ Եկեք ասենք, որ այստեղ դուք պետք է թողարկեք միայն «գին» ստեղների առավելագույն և նվազագույն արժեքները:

Առաջին բանը, որ ձեզ անհրաժեշտ է այս դեպքում, նոր զանգված ստանալն է միայն այս տվյալներով.

$numbers = array_column ($my_array, «գին»);

Echo min ($ numbers); // Տպել 5 echo max ($ numbers); // Տպել 50

Սա ավարտում է աշխատանքը զանգվածների հետ PHP-ում: Եթե ​​հանկարծ ձեր զանգվածի կառուցվածքը տարբերվի, և դուք չգիտեք, թե ինչպես մշակել այն, տվեք համապատասխան հարցը մեկնաբանություններում, ես կփորձեմ օգնել ձեզ:

JavaScript-ում միաչափ զանգվածի ամենամեծ և ամենափոքր արժեքը գտնելը

Ի տարբերություն PHP-ի, JavaScript-ում զանգվածների տեսակը շատ ավելի պարզ է, և պարզ միաչափ զանգվածը կունենա հետևյալ տեսքը.

Var my_array = ;

Այստեղ ոչ մի ինդեքս չի նշվում: Այս զանգվածում առավելագույն և նվազագույն արժեքները գտնելու համար մենք կգրենք մեր սեփական երկու պարզ գործառույթ.

Function arrayMax(array) ( return array.reduce(function(a, b) ( return Math.max(a, b); ));) ֆունկցիա arrayMin(array) ( return array.reduce(function(a, b) ( վերադարձնել Math.min(a, b); )); )

որոնք օգտագործվում են մեզ անհրաժեշտ արժեքները գտնելու համար: Օգտագործումը նույնպես պարզ է.

Զգուշացում (arrayMax (my_array)); // Տպել 74 զգուշացում (arrayMin(my_array)); // Տպել 2

Այս դեպքում «2» և «74» թվերը կցուցադրվեն էկրանին որպես զանգվածի նվազագույն և առավելագույն արժեքներ:

JavaScript-ում բազմաչափ զանգվածի ամենամեծ և ամենափոքր արժեքը գտնելը

JavaScript-ում բազմաչափ զանգվածները նույնքան պարզ են, և դրանք հետևյալն են.

Var my_array = [ , , ];

Փորձենք այստեղ գտնել առավելագույնն ու նվազագույնը։ Սկզբից մենք կգրենք մի ֆունկցիա, որին, ըստ մեզ արդեն ծանոթ սխեմայի, այս զանգվածը կներկայացնենք որպես միաչափ.

Var out_array = ; my_array.forEach(function(v) (Array.prototype.push.apply(out_array, v); ));

Եվ օգտագործելով օբյեկտը » Մաթեմատիկա«Մենք ստանում ենք մեզ անհրաժեշտ արժեքները.

Var min = Math.min.apply(null, out_array); // Ստացեք 2 var max = Math.max.apply(null, out_array); // Ստացեք 74 ահազանգ (առավելագույնը); // Տպել 74 էկրանին

Փաստորեն, օբյեկտի փոխարեն» Մաթեմատիկա«Դուք կարող եք օգտագործել տարբերակում օգտագործվող մեր գործառույթները միաչափ զանգվածով, բայց որպեսզի հասկանաք, որ ցանկացած խնդիր կարող է լուծվել մի քանի ձևով. այստեղ ես մի փոքր այլ լուծում եմ տվել:

Դե, ավանդույթի համաձայն՝ փոքր բոնուս: Դիտարկենք մեկ այլ բազմաչափ զանգված հետևյալ կառուցվածքով.

Var my_array = [["Մեկ", "2018-03-19", 5], ["Երկու", "2018-03-19", 50], ["Երեք", "2018-03-19", 25 ], ];

Ինչպես տեսնում ենք, յուրաքանչյուր զանգվածի թվային արժեքները երրորդ տեղում են։ Եկեք գրենք որոշ կոդ և ստանանք համապատասխան արժեքները հենց այս տվյալներից.

Var min = +Infinity; var max = -Անսահմանություն; my_array.forEach(function(item) (if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) (max =+ տարր; // Փնտրում եմ առավելագույն արժեքը) )); զգուշացում (min+" "+max); // Ցուցադրել արդյունքը էկրանին

Այսքանը: Մի մոռացեք աջակցել նախագծին: Շատ հետաքրքիր բաներ են սպասում ձեզ առջևում:

Ես զանգված ունեմ այս ձևաչափով.

Զանգված ( => Զանգված ( => 117 => Ցանց => 16) => Զանգված ( => 188 => FTP => 23) => Զանգված ( => 189 => Ինտերնետ => 48))

Կա՞ լավ միջոց «հաշվի» նվազագույն և առավելագույն արժեքները ստանալու համար: Ես կարող էի դա անել՝ օգտագործելով բազմաթիվ օղակներ, բայց ես մտածեցի, որ կարող է ավելի լավ միջոց լինել:

Ի տարբերություն մյուսների, դուք չեք կարող օգտագործել min() / max() ֆունկցիաները այս խնդրի համար, քանի որ այս ֆունկցիաները չեն հասկանում իրենց փոխանցված տվյալների (զանգվածի) զանգվածները: Այս գործառույթներն աշխատում են միայն սկալյար զանգվածի տարրերի համար:

ՍԿՍԵԼ ՊԱՏԿԵՐԸ

Պատճառը, թե ինչու է min() և max() օգտագործումը տալիս է ճիշտ պատասխանը, այն է, որ զանգվածները տիպային փոխանցում են ամբողջ թվերին, ինչը չսահմանված վարքագիծ է.

Փոխակերպման վարքագիծը ամբողջ թվի սահմանված չէ այլ տեսակների համար: Մի ապավինեք որևէ դիտարկված վարքագծին, քանի որ այն կարող է փոխվել առանց նախազգուշացման:

Իմ վերը նշված արտահայտությունը տիպի ձուլման մասին սխալ էր: Իրականում min()-ը և max()-ն աշխատում են զանգվածների հետ, բայց ոչ այնպես, ինչպես OP-ին անհրաժեշտ են դրանք աշխատելու համար: Երբ օգտագործում եք min() և max() բազմաթիվ զանգվածներով կամ զանգվածի տարրերի զանգվածով, համեմատեք տարրերը տարր առ տարր ձախից աջ.

$val = min (զանգված (2, 4, 8), զանգված (2, 5, 1)); // զանգված(2, 4, 8) /* * առաջին տարրը՝ համեմատած առաջին տարրի հետ՝ 2 == 2 * երկրորդ տարրը՝ համեմատած երկրորդ տարրի հետ՝ 4< 5 * first array is considered the min and is returned */

Խնդրի մեջ թարգմանված՝ OP-ը ցույց է տալիս, թե ինչու ուղղակիորեն օգտագործելով min() և max()-ը ճիշտ արդյունք է տալիս: Զանգվածի առաջին տարրերը id-ն են, ուստի min()-ը և max()-ը նախ համեմատում են դրանք, ի դեպ, տանում է դեպի ճիշտ արդյունք, քանի որ ամենացածր id-ն այն է, որն ունի ամենացածր թիվը, իսկ ամենաբարձր id-ն այն է: որն ունի ամենաբարձր ցուցանիշը:

ՎԵՐՋ ԽՄԲԱԳՐԵԼ

Ճիշտ ճանապարհը օղակ օգտագործելն է:

$a = array(array("id" => 117, "name" => "Networking", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array ("id" => 189, "name" => "Ինտերնետ", "count" => 48)); $min = PHP_INT_MAX; $ max = 0; foreach ($a որպես $i) ( $min = min($min, $i["count"]); $max = max($max, $i["count"]);

Կարող եք օգտագործել max() և min() ֆունկցիաները:

Ի՞նչ արեցիք բազմաթիվ օղակների հետ: Մեկը բավական է :)

  1. Ստացեք առաջին տարրը՝ հաշվելով $min-ի և max-ի քանակը
  2. կրկնեք մնացածի վրա, համեմատեք հաշվարկը յուրաքանչյուր $min-ի և $max-ի հետ, եթե ավելի քիչ/մեծ է, նշանակեք հաշվարկի նոր արժեք

Դուք կարող եք օգտագործել max/min ֆունկցիաները, քանի որ դրանք կվերադարձնեն զանգված, որը պարունակում է յուրաքանչյուր ցուցանիշի առավելագույն/նվազագույնը: Ձեր օրինակը պետք է վերադարձնի զանգված (189, «Ցանցային կապ», 48) առավելագույնի համար: Դուք կարող եք այնուհետև վերցնել միավորը այս զանգվածից:

Թարմացնելը չի ​​աշխատում, քանի որ ես բացառել եմ: Տղամարդկանց էջի օրինակը ապակողմնորոշիչ է, և օրինակը տալիս է ճիշտ արդյունք՝ օգտագործելով max, բայց դա պարզապես պատահականություն է:

Կարծես թե դուք չեք կարող օգտագործել max() 2D զանգվածում: Այն պարզապես վերադարձնում է ամենամեծ զանգվածը, այլ ոչ թե max() յուրաքանչյուր ինդեքսի (ինչպես նշված է մի քանի պատասխաններում):

$count = զանգված (); foreach ($arr որպես $_arr) ($count = $_arr["count"];) var_dump(max($count), min($count));

Կա՞ համարժեք ներկառուցվածգործառույթը դրա համար? (նույնիսկ առանց հնարավորության փորձարկում)

/** * առբերում է սյունակ 2D զանգվածից մեկ այլ սյունակի վրա կամայական ընտրությամբ * * @param $ aArray՝ առբերելու * @param $ aColName սյունակի անունը, որը պետք է առբերվի, օրինակ. «O_NAME» * @param $aColTest (ըստ ցանկության) սյունակի անունը՝ թեստը գործարկելու համար, օրինակ. «O_ID» * @param $aTest (ըստ ցանկության) տող՝ փորձարկման համար, օրինակ. ">=10", "== "". $Toto. "" " * @return 1D զանգվածը միայն սյունակն է հանված * @access public * / ֆունկցիա extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ($mRes = array()); foreach ($aArray որպես $ տող) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ տող [ $ aColName]; ) ) վերադարձնել $ mRes;) // extractColFromArray