Php massiivi maksimaalse väärtuse leidmine. PHP Hankige minimaalsed ja maksimaalsed väärtused kahemõõtmelises assotsiatiivses massiivis. Mitmemõõtmelise massiivi suurima ja väikseima väärtuse leidmine JavaScriptis

Mul on massiiv selles vormingus:

Massiiv ( => Massiv ( => 117 => Võrgundus => 16) => Massiv ( => 188 => FTP => 23) => Massiv ( => 189 => Internet => 48))

Kas on olemas hea viis "count" min ja max väärtuste saamiseks? Ma saaksin seda teha mitme silmuse abil, kuid arvasin, et võib olla parem viis.

Erinevalt teistest ei saa te selle probleemi jaoks kasutada funktsioone min() / max(), kuna need funktsioonid ei mõista neile edastatud andmemassiivisid (massiivi). Need funktsioonid töötavad ainult skalaarmassiivi elementide puhul.

ALUSTA PILT

Põhjus, miks näib, et min() ja max() kasutamine annab õige vastuse, seisneb selles, et massiivid edastavad täisarvudeks, mis on määratlemata käitumine:

Täisarvuks teisendamise käitumine pole muude tüüpide jaoks määratletud. Ärge lootke ühelegi täheldatud käitumisele, kuna see võib ilma hoiatuseta muutuda.

Minu ülaltoodud väide tüübivalamise kohta oli vale. Tegelikult töötavad min() ja max() massiividega, kuid mitte nii, nagu OP nende tööks vajab. Kui kasutate min() ja max() mitme massiivi või massiivi elementide massiiviga, võrrelge elemente elementide kaupa vasakult paremale:

$val = min(massiiv(2, 4, 8), massiiv(2, 5, 1)); // array(2, 4, 8) /* * esimene element võrreldes esimese elemendiga: 2 == 2 * teine ​​element võrreldes teise elemendiga: 4< 5 * first array is considered the min and is returned */

Ülesandeks tõlgituna näitab OP, miks näib, et min() ja max() kasutamine annab õige tulemuse. Massiivi esimesed elemendid on id, nii et min() ja max() võrdlevad neid kõigepealt, mis viib õige tulemuseni, sest madalaima id on see, millel on kõige väiksem arv ja kõrgeim on see millel on suurim arv.

LÕPETA EDIT

Õige viis on kasutada silmust.

$a = array(massiiv("id" => 117, "nimi" => "Võrgundus", "loendus" => 16), array("id" => 188, "nimi" => "FTP", " count" => 23), array("id" => 189, "nimi" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a kui $i) ( $min = min($min, $i["count"]); $max = max($max, $i["count"]); )

Võite kasutada funktsioone max() ja min().

Mida sa tegid mitme silmusega? Piisab ühest :)

  1. Hankige esimene element, loendades nii $min kui ka max
  2. korrake ülejäänutega, võrrelge loendust iga $min ja $max-ga, kui väiksem/suurem, määrake uus loendusväärtus

Saate kasutada max/min funktsioone, kuna need tagastavad massiivi, mis sisaldab iga indeksi maksimumi/miinimumi. Teie näide peaks tagastama massiivi(189, "Networking", 48) max . Seejärel saate sellest massiivist skoori haarata.

Selle värskendamine ei tööta, nagu ma välistasin. Man-lehe näide on eksitav ja näide annab õige tulemuse kasutades max, kuid see on lihtsalt kokkusattumus.

Näib, et te ei saa 2D-massiivil kasutada väärtust max(). See lihtsalt tagastab iga indeksi suurima massiivi, mitte max() (nagu on öeldud mitmes vastuses).

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

Kas on olemas samaväärne sisseehitatud funktsioon selleks? (isegi ilma võimaluseta testimine)

/** * hangib veeru 2D-massiivist koos valikulise valikuga teise veeru kohal * * @param $ aMassiv, mida hankida * @param $ aColName tootava veeru nimi, nt. "O_NAME" * @param $aColTest (valikuline) veeru nimi testi käivitamiseks, nt. "O_ID" * @param $aTest (valikuline) string test nt. ">=10", "== "". $Toto. "" " * @return 1D massiiv ainult veeru ekstraheerimisega * @access public * / funktsioon extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest ";"))) ( $ mRes = $ rida [ $ aColName ]; ) ) tagastab $ mRes ) // extractColFromArray

Massiivid on üks mugavamaid struktureeritud viise teabe salvestamiseks. Igal sellise massiivi elemendil on oma koht, oma võti ja väärtus. Massiivide sisu võib olla erinev, näiteks numbrite, nimede või lihtsate arvväärtuste andmebaas. Numbritest rääkides võib meil tekkida mitmesuguseid ülesandeid, näiteks maksimaalse või minimaalse väärtuse tuletamine. Täna räägime sellest, kuidas seda erinevates programmeerimiskeeltes lahendatakse.

Ühemõõtmelise massiivi suurima ja väikseima väärtuse leidmine PHP-s

Kõik massiivid erinevad oma struktuuri poolest. Mõelge kahele lihtsale ühemõõtmelisele massiivile, millest üks ei sisalda võtmeid:

$minu_massiiv = massiiv(22, 24, 37, 74, 23, 2, 10);

ja üks identne eelmisega, kuid võtmetega:

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

Proovime kuvada selle massiivi maksimaalsed ja minimaalsed väärtused. Selleks kasutame standardseid funktsioone " max"Ja" min" vastavalt:

Kaja max($minu_massiiv); // Trüki 74 echo min($my_array); // Trüki 2

Kui vaatame teist massiivi lähemalt, siis saame tulemuseks maksimaalsete või minimaalsete väärtuste võtme.

Massiivi kasutamine näitena

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

see näeb välja selline:

$max = massiivi_võtmed($minu_massiv, max($minu_massiv)); $max = $max;// Maksimaalse väärtuse võti $min = massiivi_võtmed($minu_massiiv, min($minu_massiv)); $min = $min; // Minimaalse väärtuse võti echo $max; // Maksimaalse väärtuse tulemuse printimine

Vastavalt sellele on maksimaalse väärtuse võti "4" ja minimaalne väärtus "6".

Mitmemõõtmelise massiivi suurima ja väikseima väärtuse leidmine PHP-s

Mitmemõõtmelisi massiive eristab nende pesastumine. Näiteks näeks kahemõõtmeline massiiv ilma klahvideta välja selline:

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

Ja vastavalt teatud klahvidega:

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

Sel juhul on maksimum- ja miinimumväärtuste leidmine veidi keeruline, kuid ka võimalik.

Esiteks, selleks, et leida siit maksimum ja miinimum, teisendame massiivi ühemõõtmeliseks:

$välja_massiiv = massiiv(); foreach($minu_massiiv kui $alamsiiv) ( $välja_massiiv = massiivi_liitmine($välja_massiiv, $alamsiiv); )

Kujundus töötab mõlema ülaltoodud variandi puhul. Ja siis, järgides ühemõõtmelise massiivi näidet, kuvame vajalikud andmed:

Echo max($out_massiiv); // Trüki 74 echo min($out_array); // Trüki 2

Väikese boonusena toon näite teisest populaarsest kahemõõtmelisest massiivist:

$minu_massiiv = array(massiiv("id" => "1", "kuupäev" => "2018-03-19", "price" => "5",), massiiv ("id" => "2" , "kuupäev" => "2018-03-19", "hind" => "50", massiiv ("id" => "3", "date" => "2018-03-19", " hind" => "25"));

Populaarsuse all ei pea ma silmas sisu, vaid näidet selle ülesehitusest. Oletame, et siin peate väljastama ainult "hinna" klahvide maksimaalsed ja minimaalsed väärtused.

Esimene asi, mida sel juhul vajate, on hankida uus massiiv ainult nende andmetega:

$numbrid = massiivi_veerg($minu_massiv, "hind");

Kaja min($numbrid); // Trüki 5 echo max($numbers); // Trüki 50

See lõpetab töö PHP-s massiividega. Kui teie massiivi struktuur on äkki teistsugune ja te ei tea, kuidas seda töödelda, esitage kommentaarides vastav küsimus, proovin teid aidata.

Ühemõõtmelise massiivi suurima ja väikseima väärtuse leidmine JavaScriptis

Erinevalt PHP-st on JavaScripti massiivide tüüp palju lihtsam ja lihtne ühemõõtmeline massiiv näeb välja järgmine:

Muut minu_massiiv = ;

Siin pole indekseid näidatud. Selle massiivi maksimaalse ja minimaalse väärtuse leidmiseks kirjutame kaks lihtsat funktsiooni:

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

mida kasutatakse meile vajalike väärtuste leidmiseks. Kasutamine on samuti lihtne:

Alert(massiivMax(minu_massiiv)); // Trüki 74 alert(massiiviMin(minu_massiiv)); // Trüki 2

Sel juhul kuvatakse ekraanil massiivi miinimum- ja maksimumväärtustena numbreid “2” ja “74”.

Mitmemõõtmelise massiivi suurima ja väikseima väärtuse leidmine JavaScriptis

JavaScripti mitmemõõtmelised massiivid on sama lihtsad ja näevad välja järgmised:

Var minu_massiiv = [ , , ];

Proovime siit leida maksimumi ja miinimumi. Alustuseks kirjutame funktsiooni, millega vastavalt meile juba tuttavale skeemile esitame selle massiivi ühemõõtmelisena:

Var out_array = ; minu_massiiv.forEach(function(v) ( Massiiv.prototüüp.push.apply(out_massiiv, v); ));

Ja objekti kasutamine " matemaatika"saame väärtused, mida vajame:

Var min = Math.min.apply(null, out_array); // Hangi 2 var max = Math.max.apply(null, out_array); // Hangi 74 alert(max); // Trüki 74 ekraanile

Tegelikult objekti asemel " matemaatika„Võite kasutada meie versioonis kasutatud funktsioone ühemõõtmelise massiiviga, kuid nii, et te mõistaksite, et iga probleemi saab lahendada mitut moodi – siin olen andnud veidi teistsuguse lahenduse.

Noh, traditsiooni kohaselt - väike boonus. Vaatleme teist mitmemõõtmelist massiivi, millel on järgmine struktuur:

Var my_array = [["Üks", "2018-03-19", 5], ["Kaks", "2018-03-19", 50], ["Kolm", "2018-03-19", 25 ], ];

Nagu näeme, on iga massiivi arvväärtused kolmandal kohal. Kirjutame koodi ja saame nendest andmetest vastavad väärtused:

Var min = +lõpmatus; var max = -lõpmatus; my_array.forEach(function(item) ( if(+üks< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ üksus; // Maksimaalse väärtuse otsimine ) )); märguanne(min+" "+max); // Tulemuse kuvamine ekraanil

See on kõik. Ärge unustage projekti toetada. Ees ootab palju huvitavat!

(PHP 4, PHP 5, PHP 7)

min - Leiab väikseima väärtuse

Kirjeldus

Kui edastatakse ainult üks argument - arvude massiiv, min() tagastab neist väikseima. Kui esimene argument on täisarv või ujuk, siis peab olema veel vähemalt üks argument. Sel juhul funktsioon min() tagastab neist väikseima.

Kommenteeri:

Erinevat tüüpi väärtusi võrreldakse kasutades standardsed võrdlusreeglid. Näiteks mittenumbriline string ( string ) võrreldakse täisarvuga ( täisarv ), nagu oleks see võrdne 0 , kuid mitu rida ( string ) võrreldakse tähestikulises järjekorras. Tagastatud väärtus säilitab muutuja algse tüübi ilma teisendamata.

Tagastusväärtused

Funktsioon min() tagastab parameetri väärtuse, mida peetakse standardsete võrdlusreeglite kohaselt "väikseimaks". Kui mitu erinevat tüüpi väärtust on üksteisega võrdsed (st. 0 Ja "abc"), siis esimene tagastatakse.

Näited

Näide nr 1 Kasutusnäide min()

kaja min(2, 3, 1, 6, 7); // 1
kaja min (massiiv(2 , 4 , 5 )); // 2

// Stringi "tere", kui võrrelda stringiga int, käsitletakse seda kui 0
// Kuna mõlemad väärtused on võrdsed, määrab tulemuse parameetrite järjekord
echo min(0, "tere"); // 0
kaja min ("tere" , 0 ); // Tere

// Siin võrdleme -1< 0, поэтому -1 является наименьшим значением
kaja min ("tere" , - 1 ); // -1

// Erineva pikkusega massiivide võrdlemisel tagastab min lühema
$val = min (massiivi(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // array(2, 2, 2)

// Võrreldakse mitut ühepikkust massiivi vasakult paremale
// selle näite jaoks: 2 == 2, aga 4< 5
$val = min (massiiv(2 , 4 , 8 ), array(2 , 5 , 1 )); // array(2, 4, 8)

// Kui võrrelda massiivi ja mittemassiivi, siis massiivi kunagi ei tagastata
// kuna massiive peetakse kõigist teistest väärtustest suuremaks
$val = min ("string" , array(2 , 5 , 7 ), 42 ); //string

// Kui üks argument on NULL või tõeväärtus, võrreldakse seda teistega
// kasutades reeglit FALSE< TRUE, учитывая остальные типы аргументов
// Antud näites käsitletakse väärtusi -10 ja 10 kui TRUE
$val = min (- 10 , FALSE , 10 ); // VALE
$val = min (- 10 , NULL , 10 ); // NULL

// teisest küljest käsitletakse 0 väärtust VÄÄR, seega on see "vähem" kui TÕENE
$val = min(0, TÕENE); // 0
?>