PHP Merrni vlerat minimale dhe maksimale në një grup shoqërues dydimensional. Min - Gjen vlerën më të vogël Php numrin e vlerave minimale në grup

(PHP 4, PHP 5, PHP 7)

min - Gjen vlerën më të vogël

Përshkrim

Nëse kalohet vetëm një argument - një grup numrash, min () kthen më të voglin prej tyre. Nëse argumenti i parë është një numër i plotë ose float, atëherë duhet të ketë të paktën një më shumë. Në këtë rast funksioni min () do të kthejë më të voglin prej tyre.

Komentoni:

Vlerat e llojeve të ndryshme krahasohen duke përdorur rregullat standarde të krahasimit. Për shembull, një varg jo numerik ( varg) do të krahasohet me një numër të plotë ( numër i plotë) sikur të ishte e barabartë 0 , por disa rreshta ( varg) do të krahasohen sipas alfabetit. Vlera e kthyer do të ruajë llojin origjinal të ndryshores, pa konvertim.

Vlerat e kthimit

Funksioni min () kthen vlerën e parametrit që konsiderohet "më i vogli" sipas rregullave standarde të krahasimit. Nëse disa vlera të llojeve të ndryshme janë të barabarta me njëra-tjetrën (d.m.th. 0 Dhe "abc"), atëherë i pari do të kthehet.

Shembuj

Shembulli #1 Shembull i përdorimit min ()

jehonë min (2, 3, 1, 6, 7); // 1
jehonë min (vargu (2, 4, 5)); // 2

// Vargu "hello", kur krahasohet me int, trajtohet si 0
// Meqenëse të dyja vlerat janë të barabarta, rendi i parametrave përcakton rezultatin
echo min (0, "përshëndetje"); // 0
echo min ("përshëndetje" , 0 ); // Përshëndetje

// Këtu krahasojmë -1< 0, поэтому -1 является наименьшим значением
echo min ("përshëndetje", - 1); // -1

// Kur krahasojmë vargje me gjatësi të ndryshme, min do të kthejë atë më të shkurtër
$val = min (vargu (2, 2, 2), vargu (1, 1, 1, 1)); // grup (2, 2, 2)

// Vargje të shumta me të njëjtën gjatësi krahasohen nga e majta në të djathtë
// për këtë shembull: 2 == 2, por 4< 5
$val = min (vargu (2, 4, 8), vargu (2, 5, 1)); // grup (2, 4, 8)

// Nëse një grup dhe një jo-varg krahasohen, grupi nuk do të kthehet kurrë
// pasi vargjet konsiderohen më të mëdha se të gjitha vlerat e tjera
$val = min ("string" , array(2 , 5 , 7 ), 42 ); //varg

// Nëse një argument është NULL ose boolean, ai do të krahasohet me të tjerët
// duke përdorur rregullin FALSE< TRUE, учитывая остальные типы аргументов
// Në shembullin e dhënë, -10 dhe 10 trajtohen si E VËRTETË
$val = min (- 10 , FALSE , 10 ); // I RREMË
$val = min (- 10 , NULL , 10 ); // I PAVLEFSHËM

// nga ana tjetër, 0 trajtohet si FALSE, pra është "më pak" se TRUE
$val = min(0, E VËRTETË); // 0
?>

Vargjet janë një nga mënyrat e përshtatshme të strukturuara për të ruajtur informacionin. Çdo element i një grupi të tillë ka vendin e vet, çelësin dhe vlerën e tij. Përmbajtja e vargjeve mund të jetë e ndryshme, të tilla si, për shembull, një bazë të dhënash me numra, emra ose vlera të thjeshta numerike. Duke folur për numrat, mund të përballemi me lloje të ndryshme detyrash, për shembull, duke zbritur vlerën maksimale ose minimale. Sot do të flasim se si zgjidhet kjo në gjuhë të ndryshme programimi.

Gjetja e vlerës më të madhe dhe më të vogël të një grupi njëdimensional në PHP

Të gjitha grupet ndryshojnë në strukturën e tyre. Konsideroni dy vargje të thjeshta njëdimensionale, njëra prej të cilave nuk përmban çelësa:

$my_array = grup (22, 24, 37, 74, 23, 2, 10);

dhe një identik me atë të mëparshëm, por me çelësa:

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

Le të përpiqemi të shfaqim vlerat maksimale dhe minimale të këtij grupi. Për ta bërë këtë, ne do të përdorim funksionet standarde " maksimumi"Dhe" min"përkatësisht:

Echo max ($my_array); // Print 74 echo min ($my_array); // Print 2

Nëse hedhim një vështrim më të afërt në grupin e dytë, atëherë si rezultat mund të marrim çelësin e vlerave maksimale ose minimale.

Duke përdorur një grup si shembull

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

do të duket kështu:

$max = çelësat_array ($my_mare, max($my_array)); $max = $max;// Çelësi me vlerë maksimale $min = çelësat_array($my_array, min($my_array)); $min = $min; // Tasti i vlerës minimale echo $max; // Shtypni rezultatin e vlerës maksimale

Prandaj, çelësi i vlerës maksimale është "4", dhe vlera minimale është "6".

Gjetja e vlerës më të madhe dhe më të vogël të një grupi shumëdimensional në PHP

Vargjet shumëdimensionale dallohen nga foleja e tyre. Për shembull, një grup dy-dimensional do të dukej kështu pa çelësat:

$my_array = grup (array (22, 24, 37), grup (74, 23, 2), grup (10));

Dhe, në përputhje me rrethanat, me çelësa të caktuar:

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

Në këtë rast, gjetja e vlerave maksimale dhe minimale është pak e vështirë, por edhe e mundur.

Së pari, për të gjetur maksimumin dhe minimumin këtu, ne e transformojmë grupin në një dimensional:

$out_array = varg(); foreach ($my_array si $sub_array) ( $out_array = array_merge ($out_array, $sub_array); )

Dizajni funksionon për të dy opsionet e mësipërme. Dhe më pas, duke ndjekur shembullin e një grupi njëdimensional, ne do të shfaqim të dhënat që na duhen:

Echo max ($out_array); // Print 74 echo min ($out_array); // Print 2

Si një bonus i vogël, unë do të jap një shembull të një grupi tjetër popullor dy-dimensional:

$my_array = grup(array("id" => "1", "data" => "2018-03-19", "çmimi" => "5",), grup ("id" => "2" , "date" => "2018-03-19", "price" => "50",), array ("id" => "3", "data" => "2018-03-19", " çmimi" => "25"));

Me popullaritet nuk nënkuptoj përmbajtjen, por një shembull të strukturës së saj. Le të themi se këtu ju duhet të nxirrni vlerat maksimale dhe minimale të vetëm çelësave "çmimi".

Gjëja e parë që ju nevojitet në këtë rast është të merrni një grup të ri vetëm me këto të dhëna:

$numrat = array_column ($my_array, "çmimi");

Echo min ($numrat); // Printoni 5 echo max ($numrat); // Print 50

Kjo përfundon punën me vargje në PHP. Nëse papritmas struktura e grupit tuaj është e ndryshme dhe nuk dini si ta përpunoni atë, bëni pyetjen e duhur në komente, unë do të përpiqem t'ju ndihmoj.

Gjetja e vlerës më të madhe dhe më të vogël të një grupi njëdimensional në JavaScript

Ndryshe nga PHP, lloji i vargjeve në JavaScript është shumë më i thjeshtë dhe një grup i thjeshtë njëdimensional do të duket kështu:

Var my_array = ;

Asnjë indeks nuk tregohet këtu. Për të gjetur vlerat maksimale dhe minimale në këtë grup, ne do të shkruajmë dy funksione të thjeshta tona:

Funksioni arrayMax(array) (array return.reduce(function(a,b) ( return Math.max(a,b); )); ) Funksioni arrayMin(array) ( return array.reduce(function(a, b) ( kthej Math.min(a, b); )); )

të cilat përdoren për të gjetur vlerat që na duhen. Përdorimi është gjithashtu i thjeshtë:

Alert(arrayMax(array_my)); // Print 74 alert(arrayMin(my_array)); // Print 2

Në këtë rast, numrat "2" dhe "74" do të shfaqen në ekran si vlerat minimale dhe maksimale të grupit.

Gjetja e vlerës më të madhe dhe më të vogël të një grupi shumëdimensional në JavaScript

Vargjet shumëdimensionale në JavaScript janë po aq të thjeshta dhe duken kështu:

Var my_array = [ , , ];

Le të përpiqemi të gjejmë maksimumin dhe minimumin këtu. Për të filluar, ne do të shkruajmë një funksion me të cilin, sipas skemës me të cilën jemi njohur tashmë, do ta paraqesim këtë grup si njëdimensional:

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

Dhe duke përdorur objektin " Math"Ne marrim vlerat që na duhen:

Var min = Math.min.apply(null, out_array); // Merr 2 var max = Math.max.apply(null, out_array); // Merr 74 alarm (maksimumi); // Printoni 74 në ekran

Në fakt, në vend të objektit " Math"Ju mund të përdorni funksionet tona të përdorura në version me një grup njëdimensional, por në mënyrë që të kuptoni se çdo problem mund të zgjidhet në disa mënyra - këtu kam dhënë një zgjidhje paksa të ndryshme.

Epo, sipas traditës - një bonus i vogël. Le të shqyrtojmë një grup tjetër shumëdimensional me strukturën e mëposhtme:

Var my_array = [["Një", "2018-03-19", 5], ["Dy", "2018-03-19", 50], ["Tre", "2018-03-19", 25 ], ];

Siç mund ta shohim, vlerat numerike në çdo grup janë në vendin e tretë. Le të shkruajmë disa kode dhe të marrim vlerat përkatëse vetëm nga këto të dhëna:

Var min = +Pafundësi; var max = -Pafundësi; my_array.forEach(funksion(artikull) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ artikull; // Duke kërkuar për vlerën maksimale ) )); alarm(min+" "+maks); // Shfaq rezultatin në ekran

Kjo eshte e gjitha. Mos harroni të mbështesni projektin. Shumë gjëra interesante ju presin përpara!

Unë kam një grup në këtë format:

Array ( => Array ( => 117 => Rrjetëzimi => 16) => Vargu ( => 188 => FTP => 23) => Vargu ( => 189 => Internet => 48))

A ka ndonjë mënyrë të mirë për të marrë vlerat min dhe maksimale të "count"? Mund ta bëja këtë duke përdorur sythe të shumta, por mendova se mund të kishte një mënyrë më të mirë.

Ndryshe nga të tjerët, nuk mund të përdorni funksionet min() / max() për këtë problem, pasi këto funksione nuk i kuptojnë vargjet e të dhënave (array) që u kalohen atyre. Këto funksione funksionojnë vetëm për elementët e grupit skalar.

FILLIMI I IMAZHIT

Arsyeja përse përdorimi i min() dhe max() duket se jep përgjigjen e saktë është sepse vargjet janë të tipit të numrave të plotë, gjë që është sjellje e papërcaktuar:

Sjellja e konvertimit në numër të plotë nuk është përcaktuar për lloje të tjera. Mos u mbështetni në asnjë sjellje të vëzhguar pasi ajo mund të ndryshojë pa paralajmërim.

Deklarata ime e mësipërme për hedhjen e tipit ishte e gabuar. Në fakt min() dhe max() punojnë me vargje, por jo në mënyrën se si OP ka nevojë për të punuar. Kur përdorni min() dhe max() me vargje të shumta ose një grup elementesh vargu, krahasoni elementet element pas elementi nga e majta në të djathtë:

$val = min(array(2, 4, 8), grup(2, 5, 1)); // array(2, 4, 8) /* * elementi i parë në krahasim me elementin e parë: 2 == 2 * elementi i dytë në krahasim me elementin e dytë: 4< 5 * first array is considered the min and is returned */

E përkthyer në problem, OP tregon pse përdorimi i drejtpërdrejtë min() dhe max() duket se jep rezultatin e saktë. Elementët e parë të grupit janë id, kështu që min() dhe max() i krahasojnë së pari, meqë ra fjala, duke çuar në rezultatin e saktë, sepse id-ja më e ulët është ajo që ka numërimin më të ulët dhe id-ja më e lartë është ajo. që ka numrin më të lartë.

FUND EDIT

Mënyra e duhur është të përdorni një lak.

$a = array(array("id" => 117, "name" => "Rrjetëzimi", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a si $i) ( $min = min($min, $i["count"]); $max = max($max, $i["count"]);

Mund të përdorni funksionet max() dhe min().

Çfarë bëtë me sythe të shumta? Mjafton një :)

  1. Merrni elementin e parë duke numëruar numrin e $min dhe max
  2. përsëritni mbi pjesën tjetër, krahasoni numërimin me çdo $min dhe $maks, nëse më pak/më e madhe caktoni një vlerë të re numërimi

Ju mund të përdorni funksionet max/min pasi ato do të kthejnë një grup që përmban maksimumin/minimumin e secilit indeks. Shembulli juaj duhet të kthejë grupin (189, "Rrjetëzimi", 48) për max. Më pas mund të kapni rezultatin nga ky grup.

Përditësimi i kësaj nuk funksionon siç e kam përjashtuar. Shembulli i faqes mashkullore është mashtrues dhe shembulli jep rezultatin e saktë duke përdorur max, por kjo është thjesht një rastësi.

Duket sikur nuk mund të përdorni max() në një grup 2D. Ai thjesht kthen grupin më të madh, në vend të max() të secilit indeks (siç thuhet në disa përgjigje).

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

A ka një ekuivalent të ndërtuara funksion për këtë? (edhe pa mundësi duke testuar)

/** * merr një kolonë nga një grup 2D me një përzgjedhje opsionale mbi një kolonë tjetër * * @param $ aArray për të marrë nga * @param $ aColName Emri i kolonës për t'u marrë, p.sh. "O_NAME" * @param Emri i kolonës $aColTest (opsionale) për të ekzekutuar testin, p.sh. "O_ID" * @param vargu $aTest (opsionale) për testin p.sh. ">=10", "== "". $Toto. "" " * @return grup 1D me vetëm kolonën e nxjerrë * @access public * / funksion extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray si $rresht) ( if (($aColTest == "") || (eval("kthim". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ rresht [ $ aColName]; ) ) kthen $ mRes;