PHP Ikki o'lchovli assotsiativ massivda minimal va maksimal qiymatlarni oling. Min - eng kichik Php qiymatini, massivdagi minimal qiymatlar sonini topadi

(PHP 4, PHP 5, PHP 7)

min - Eng kichik qiymatni topadi

Tavsif

Agar faqat bitta argument topshirilsa - raqamlar qatori, min() ularning eng kichigini qaytaradi. Agar birinchi argument butun son yoki float bo'lsa, u holda kamida bitta ko'proq bo'lishi kerak. Bu holda funksiya min() ularning eng kichigini qaytaradi.

Izoh:

Har xil turdagi qiymatlar standart taqqoslash qoidalari yordamida taqqoslanadi. Masalan, raqamli bo'lmagan qator ( ip) butun son bilan solishtiriladi ( butun son) xuddi teng bo'lgandek 0 , lekin bir nechta satr ( ip) alifbo tartibida taqqoslanadi. Qaytish qiymati o'zgaruvchining asl turini konvertatsiya qilmasdan saqlab qoladi.

Qaytish qiymatlari

Funktsiya min() standart taqqoslash qoidalariga muvofiq "eng kichik" deb hisoblangan parametr qiymatini qaytaradi. Agar har xil turdagi bir nechta qiymatlar bir-biriga teng bo'lsa (ya'ni. 0 Va "abc"), keyin birinchisi qaytariladi.

Misollar

1-misol Foydalanish misoli min()

echo min(2, 3, 1, 6, 7); // 1
echo min (massiv(2 , 4 , 5 )); // 2

// "Salom" qatori int bilan solishtirganda 0 sifatida qabul qilinadi
// Ikkala qiymat ham teng bo'lganligi sababli, parametrlarning tartibi natijani aniqlaydi
echo min(0, "salom"); // 0
echo min ("salom" , 0 ); // Salom

// Bu erda -1 ni solishtiramiz< 0, поэтому -1 является наименьшим значением
echo min ("salom" , - 1 ); // -1

// Turli uzunlikdagi massivlarni solishtirganda min qisqasini qaytaradi
$val = min (massiv(2 , 2 , 2 ), massiv (1 , 1 , 1 , 1 )); // massiv (2, 2, 2)

// Bir xil uzunlikdagi bir nechta massivlar chapdan o'ngga taqqoslanadi
// bu misol uchun: 2 == 2, lekin 4< 5
$val = min (massiv(2 , 4 , 8 ), massiv (2 , 5 , 1 )); // massiv (2, 4, 8)

// Agar massiv va massiv bo'lmaganlar solishtirilsa, massiv hech qachon qaytarilmaydi
// chunki massivlar boshqa barcha qiymatlardan kattaroq hisoblanadi
$val = min ("string" , massiv(2 , 5 , 7 ), 42 ); //string

// Agar bitta argument NULL yoki mantiqiy bo'lsa, u boshqalar bilan taqqoslanadi
// FALSE qoidasi yordamida< TRUE, учитывая остальные типы аргументов
// Keltirilgan misolda -10 va 10 TRUE deb hisoblanadi
$val = min (- 10 , FALSE , 10 ); // FALSE
$val = min (- 10 , NULL , 10 ); // NULL

// boshqa tomondan, 0 FALSE sifatida qabul qilinadi, shuning uchun u TRUE dan "kamroq"
$val = min(0, TRUE); // 0
?>

Massivlar axborotni saqlashning qulay tuzilgan usullaridan biridir. Bunday massivning har bir elementi o'z o'rni, o'z kaliti va qiymatiga ega. Massivlarning mazmuni har xil bo'lishi mumkin, masalan, raqamlar, nomlar yoki oddiy raqamli qiymatlar bazasi. Raqamlar haqida gapiradigan bo'lsak, biz turli xil vazifalarga duch kelishimiz mumkin, masalan, maksimal yoki minimal qiymatni chiqarish. Bugun biz buni turli dasturlash tillarida qanday hal qilish haqida gaplashamiz.

PHPda bir o'lchovli massivning eng katta va eng kichik qiymatini topish

Barcha massivlar tuzilishida farqlanadi. Ikkita oddiy bir o'lchovli massivni ko'rib chiqing, ulardan birida kalitlar mavjud emas:

$my_massiv = massiv(22, 24, 37, 74, 23, 2, 10);

va oldingisiga o'xshash, ammo kalitlari bilan:

$my_massiv = massiv(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

Keling, ushbu massivning maksimal va minimal qiymatlarini ko'rsatishga harakat qilaylik. Buning uchun biz standart funktsiyalardan foydalanamiz " maks"Va" min"mos ravishda:

Echo max($mening_massiv); // Chop etish 74 echo min($my_array); // Chop etish 2

Agar ikkinchi massivni yaqindan ko'rib chiqsak, natijada biz maksimal yoki minimal qiymatlarning kalitini olishimiz mumkin.

Misol sifatida massivdan foydalanish

$my_massiv = massiv(1 => 22, 2 => 24, 3 => 37, 4 => 74, 5 => 23, 6 => 2, 7 => 10);

u shunday ko'rinadi:

$max = massiv_kalitlari($mening_massiv, maksimal($mening_massiv)); $max = $max;// Maksimal qiymat kaliti $min = massiv_kalitlari($mening_massiv, min($mening_massiv)); $min = $min; // Minimal qiymat kaliti echo $max; // Maksimal qiymatning natijasini chop eting

Shunga ko'ra, maksimal qiymat kaliti "4", minimal qiymat esa "6" dir.

PHP da ko'p o'lchovli massivning eng katta va eng kichik qiymatini topish

Ko'p o'lchovli massivlar o'zlarining joylashishi bilan ajralib turadi. Masalan, ikki o'lchovli massiv kalitlarsiz shunday ko'rinadi:

$my_massiv = massiv (massiv (22, 24, 37), massiv (74, 23, 2), massiv (10));

Va shunga ko'ra, ma'lum kalitlar bilan:

$my_massiv = massiv(massiv(1 => 22, 2 => 24, 3 => 37), massiv (4 => 74, 5 => 23, 6 => 2), massiv (7 => 10));

Bunday holda, maksimal va minimal qiymatlarni topish biroz qiyin, ammo mumkin.

Birinchidan, bu erda maksimal va minimalni topish uchun biz massivni bir o'lchovliga aylantiramiz:

$out_massiv = massiv(); foreach($my_massiv $sub_massiv sifatida) ( $out_massiv = array_merge($out_array, $sub_array); )

Dizayn yuqoridagi ikkala variant uchun ham ishlaydi. Va keyin, bir o'lchovli massiv misolidan so'ng, biz kerakli ma'lumotlarni ko'rsatamiz:

Echo max($out_massiv); // Chop etish 74 echo min($out_massiv); // Chop etish 2

Kichkina bonus sifatida men yana bir mashhur ikki o'lchovli massivga misol keltiraman:

$my_array = massiv(massiv("id" => "1", "sana" => "2018-03-19", "narx" => "5",), massiv ("id" => "2" , "sana" => "2018-03-19", "narx" => "50",), massiv ("id" => "3", "sana" => "2018-03-19", " narx" => "25",));

Mashhurlik deganda tarkibni emas, balki uning tuzilishiga misol keltiraman. Aytaylik, bu erda siz faqat "narx" tugmachalarining maksimal va minimal qiymatlarini chiqarishingiz kerak.

Bu holatda sizga kerak bo'lgan birinchi narsa faqat ushbu ma'lumotlarga ega yangi massivni olishdir:

$raqamlar = massiv_ustun($mening_massiv, "narx");

Echo min($raqamlar); // 5 ta echo maks ($raqamlar) chop etish; // Chop etish 50

Bu PHP da massivlar bilan ishlashni yakunlaydi. Agar to'satdan massivingizning tuzilishi boshqacha bo'lsa va siz uni qanday qayta ishlashni bilmasangiz, izohlarda tegishli savolni so'rang, men sizga yordam berishga harakat qilaman.

JavaScript-da bir o'lchovli massivning eng katta va eng kichik qiymatini topish

PHP-dan farqli o'laroq, JavaScript-da massivlar turi ancha sodda va oddiy bir o'lchovli massiv quyidagicha ko'rinadi:

Var my_array = ;

Bu erda indekslar ko'rsatilmagan. Ushbu massivdagi maksimal va minimal qiymatlarni topish uchun biz ikkita oddiy funktsiyani yozamiz:

Funktsiya arrayMax(massiv) ( qaytish array.reduce(funktsiya(a, b) ( return Math.max(a, b); )); ) funktsiya arrayMin(massiv) ( qaytish massivi.reduce(funktsiya(a, b) ( Qaytish Math.min(a, b); )); )

ular bizga kerakli qiymatlarni topish uchun ishlatiladi. Foydalanish ham oddiy:

Ogohlantirish(arrayMax(mening_massiv)); // Chop etish 74 alert(arrayMin(mening_massiv)); // Chop etish 2

Bunday holda, ekranda "2" va "74" raqamlari massivning minimal va maksimal qiymatlari sifatida ko'rsatiladi.

JavaScript-da ko'p o'lchovli massivning eng katta va eng kichik qiymatini topish

JavaScript-dagi ko'p o'lchovli massivlar xuddi shunday oddiy va ular quyidagicha ko'rinadi:

Var my_array = [ , , ];

Keling, bu erda maksimal va minimalni topishga harakat qilaylik. Boshlash uchun biz allaqachon tanish bo'lgan sxema bo'yicha ushbu massivni bir o'lchovli sifatida taqdim etadigan funktsiyani yozamiz:

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

Va ob'ektdan foydalanish " Matematika"Biz kerakli qiymatlarni olamiz:

Var min = Math.min.apply (null, out_massiv); // 2 var max oling = Math.max.apply (null, out_array); // 74 ogohlantirish olish (maksimal); // Ekranda 74 chop etish

Aslida, ob'ekt o'rniga " Matematika“Siz bizning versiyada qo'llanilgan funksiyalarimizdan bir o'lchovli massiv bilan foydalanishingiz mumkin, ammo har qanday muammoni bir necha usul bilan hal qilish mumkinligini tushunishingiz uchun - bu erda men biroz boshqacha echim berdim.

Xo'sh, an'anaga ko'ra - kichik bonus. Keling, quyidagi tuzilishga ega bo'lgan boshqa ko'p o'lchovli massivni ko'rib chiqaylik:

Var my_array = [["Bir", "2018-03-19", 5], ["Ikki", "2018-03-19", 50], ["Uch", "2018-03-19", 25 ], ];

Ko'rib turganimizdek, har bir massivdagi raqamli qiymatlar uchinchi o'rinda. Keling, bir nechta kod yozamiz va faqat ushbu ma'lumotlardan mos keladigan qiymatlarni olamiz:

Var min = +Infinity; var max = -Infinity; my_array.forEach(funksiya(element) (if(+element).< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ element; // Maksimal qiymat qidirilmoqda ) )); ogohlantirish (min+" "+maks); // Natijani ekranda ko'rsatish

Ana xolos. Loyihani qo'llab-quvvatlashni unutmang. Oldinda sizni juda ko'p qiziqarli narsalar kutmoqda!

Menda ushbu formatdagi massiv bor:

Massiv ( => Massiv ( => 117 => Tarmoq => 16) => Massiv ( => 188 => FTP => 23) => Massiv ( => 189 => Internet => 48))

"Hisoblash" ning minimal va maksimal qiymatlarini olishning yaxshi usuli bormi? Men buni bir nechta halqalar yordamida qilishim mumkin edi, lekin men yaxshiroq yo'l bo'lishi mumkin deb o'yladim.

Boshqalardan farqli o'laroq, siz ushbu muammo uchun min() / max() funksiyalaridan foydalana olmaysiz, chunki bu funksiyalar ularga uzatilgan ma'lumotlar (massiv) massivlarini tushunmaydi. Bu funksiyalar faqat skalyar massiv elementlari uchun ishlaydi.

RASMNI BOSHLASH

Min() va max() dan foydalanish to'g'ri javob berishining sababi shundaki, massivlar butun sonlarga yoziladi, bu aniqlanmagan xatti-harakatlardir:

Butun songa aylantirish harakati boshqa turlar uchun aniqlanmagan. Har qanday kuzatilgan xatti-harakatlarga tayanmang, chunki u ogohlantirishsiz o'zgarishi mumkin.

Tip-casting haqidagi yuqoridagi bayonotim noto'g'ri edi. Aslida min() va max() massivlar bilan ishlaydi, lekin OP ularni ishlashi kerak bo'lgan tarzda emas. Bir nechta massiv yoki massiv elementlari massivi bilan min() va max() dan foydalanilganda elementlarni element bo‘yicha chapdan o‘ngga solishtiring:

$val = min (massiv (2, 4, 8), massiv (2, 5, 1)); // massiv(2, 4, 8) /* * birinchi elementga nisbatan birinchi element: 2 == 2 * ikkinchi elementga nisbatan: 4< 5 * first array is considered the min and is returned */

Muammoga tarjima qilingan OP nima uchun to'g'ridan-to'g'ri min() va max() dan foydalanish to'g'ri natija berishini ko'rsatadi. Massivning birinchi elementlari id dir, shuning uchun min() va max() avval ularni solishtiradi, darvoqe, bu toʻgʻri natijaga olib keladi, chunki eng past identifikator eng kam songa ega boʻlgan va eng yuqori id esa bitta. bu eng yuqori ko'rsatkichga ega.

TAHRIRLASHNI TUGASH

To'g'ri yo'l loopdan foydalanishdir.

$a = massiv(massiv("id" => 117, "nom" => "Tarmoq", "hisoblash" => 16), massiv("id" => 188, "nom" => "FTP", " count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a sifatida $i) ( $min = min($min, $i["hisob"]); $maks = max($max, $i["hisob"]); )

Siz max() va min() funksiyalaridan foydalanishingiz mumkin.

Bir nechta loop bilan nima qildingiz? Bittasi kifoya :)

  1. $min va max sonini sanab birinchi elementni oling
  2. qolganini takrorlang, har bir $min va $max bilan hisoblashni solishtiring, agar kamroq/kattaroq bo'lsa, yangi hisoblash qiymatini belgilang

Siz max/min funksiyalaridan foydalanishingiz mumkin, chunki ular har bir indeksning maksimal/minimalini o'z ichiga olgan massivni qaytaradi. Sizning namunangiz max uchun massivni (189, "Tarmoq", 48) qaytarishi kerak. Keyin ushbu massivdan ball olishingiz mumkin.

Buni yangilash men rad etganimdek ishlamaydi. Man sahifasi misoli noto'g'ri va misol max yordamida to'g'ri natija beradi, lekin bu shunchaki tasodif.

2D massivida max() dan foydalana olmaganga o'xshaysiz. U har bir indeksning max() ni emas, balki eng katta massivni qaytaradi (bir nechta javoblarda aytilganidek).

$count = massiv(); foreach($arr as $_arr) ( $count = $_arr["count"]; ) var_dump(max($count), min($count));

Ekvivalenti bormi o'rnatilgan Buning uchun funktsiya? (imkoniyatsiz ham sinovdan o'tkazish)

/** * 2D massivdan ustunni boshqa ustun ustiga ixtiyoriy tanlash bilan oladi * * dan olish uchun @param $ aArray * @param $ aColName olish uchun ustun nomi, masalan. "O_NAME" * @param $aColTest (ixtiyoriy) testni bajarish uchun ustun nomi, masalan. Sinov uchun "O_ID" * @param $aTest (ixtiyoriy) qatori. ">=10", "== "". $Toto. "" " * @return 1D massiv faqat ustuni chiqarilgan * @access public * / funksiyasi ekstraktiColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray $satr sifatida) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ qator [ $ aColName]; ) ) qaytarish $ mRes; ) // extractColFromArray