Php pronalaženje maksimalne vrijednosti u nizu. PHP Dobijte minimalne i maksimalne vrijednosti u dvodimenzionalnom asocijativnom nizu. Pronalaženje najveće i najmanje vrijednosti višedimenzionalnog niza u JavaScriptu

Imam niz u ovom formatu:

Niz ( => Niz ( => 117 => Umrežavanje => 16) => Niz ( => 188 => FTP => 23) => Niz ( => 189 => Internet => 48))

Postoji li dobar način da se dobiju minimalne i maksimalne vrijednosti za "count"? Mogao bih to učiniti pomoću višestrukih petlji, ali mislio sam da možda postoji bolji način.

Za razliku od drugih, ne možete koristiti funkcije min() / max() za ovaj problem, jer te funkcije ne razumiju nizove podataka (niz) koji su im proslijeđeni. Ove funkcije rade samo za elemente skalarnog niza.

POČETNA SLIKA

Razlog zašto se čini da upotreba min() i max() daje točan odgovor je taj što nizovi pretvaraju tipove u cijele brojeve, što je nedefinirano ponašanje:

Ponašanje pretvorbe u cijeli broj nije definirano za druge tipove. Nemojte se oslanjati na promatrano ponašanje jer se može promijeniti bez upozorenja.

Moja gornja izjava o lijevanju tipa bila je pogrešna. Zapravo min() i max() rade s nizovima, ali ne na način na koji OP treba da rade. Kada koristite min() i max() s višestrukim nizovima ili nizom elemenata niza, usporedite elemente element po element s lijeva na desno:

$val = min(niz(2, 4, 8), niz(2, 5, 1)); // array(2, 4, 8) /* * prvi element u usporedbi s prvim elementom: 2 == 2 * drugi element u usporedbi s drugim elementom: 4< 5 * first array is considered the min and is returned */

Prevedeno u problem, OP pokazuje zašto izravna upotreba min() i max() daje točan rezultat. Prvi elementi niza su id, pa ih min() i max() prvo uspoređuju, usput, što dovodi do ispravnog rezultata, jer najmanji id je onaj koji ima najmanji broj, a najveći id je onaj koji ima najveći broj.

ZAVRŠI UREĐIVANJE

Ispravan način je korištenje petlje.

$a = array(array("id" => 117, "name" => "Umrežavanje", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a kao $i) ( $min = min($min, $i["count"]); $max = max($max, $i["count"]); )

Možete koristiti funkcije max() i min().

Što ste učinili s višestrukim petljama? Jedna je dovoljna :)

  1. Dobijte prvi element računajući min. i maks
  2. ponovite ostatak, usporedite brojač sa svakim $min i $max, ako je manje/veće dodijelite novu vrijednost brojanja

Možete koristiti funkcije max/min jer će vratiti niz koji sadrži maksimum/minimum svakog indeksa. Vaš bi primjer trebao vratiti array(189, "Networking", 48) za max. Zatim možete dohvatiti rezultat iz ovog niza.

Ažuriranje ovoga ne radi kao što sam isključio. Primjer stranice s uputama dovodi u zabludu i daje točan rezultat koristeći max, ali to je samo slučajnost.

Čini se da ne možete koristiti max() na 2D polju. Jednostavno vraća najveći niz, umjesto max() svakog indeksa (kao što je navedeno u nekoliko odgovora).

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

Postoji li ekvivalent ugrađeni funkcija za ovo? (čak i bez mogućnosti testiranje)

/** * dohvaća stupac iz 2D niza s neobaveznim odabirom preko drugog stupca * * @param $ aArray za dohvaćanje iz * @param $ aColName naziv stupca za dohvaćanje, npr. "O_NAME" * @param $aColTest (neobavezno) ime stupca za pokretanje testa, npr. "O_ID" * @param $aTest (neobavezno) niz za test npr. ">=10", "== "". $Toto. "" " * @return 1D polje sa samo ekstrahiranim stupcem * @access public * / funkcija extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ row [ $ aColName ]; ) ) return $ mRes ) // extractColFromArray

Nizovi su jedan od zgodnih strukturiranih načina za pohranu informacija. Svaki element takvog niza ima svoje mjesto, svoj ključ i vrijednost. Sadržaj nizova može biti različit, kao što je, na primjer, baza podataka brojeva, imena ili jednostavnih numeričkih vrijednosti. Govoreći o brojevima, možemo se suočiti s raznim vrstama zadataka, na primjer, određivanje maksimalne ili minimalne vrijednosti. Danas ćemo govoriti o tome kako se to rješava u različitim programskim jezicima.

Pronalaženje najveće i najmanje vrijednosti jednodimenzionalnog niza u PHP-u

Svi se nizovi razlikuju po svojoj strukturi. Razmotrimo dva jednostavna jednodimenzionalna niza, od kojih jedan ne sadrži ključeve:

$moj_niz = niz(22, 24, 37, 74, 23, 2, 10);

i jedan identičan prethodnom, ali s ključevima:

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

Pokušajmo prikazati maksimalnu i minimalnu vrijednost ovog niza. Za to ćemo koristiti standardne funkcije " max"I" min" odnosno:

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

Ako detaljnije pogledamo drugi niz, tada kao rezultat možemo dobiti ključ maksimalnih ili minimalnih vrijednosti.

Korištenje niza kao primjera

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

izgledat će ovako:

$max = array_keys($my_array, max($my_array)); $max = $max;// Ključ maksimalne vrijednosti $min = array_keys($my_array, min($my_array)); $min = $min; // Minimalna vrijednost ključa echo $max; // Ispis rezultata maksimalne vrijednosti

Sukladno tome, ključ maksimalne vrijednosti je "4", a minimalna vrijednost je "6".

Pronalaženje najveće i najmanje vrijednosti višedimenzionalnog niza u PHP-u

Višedimenzionalni nizovi se razlikuju po svom ugniježđenju. Na primjer, dvodimenzionalni niz bi izgledao ovako bez ključeva:

$moj_niz = niz(niz(22, 24, 37), niz(74, 23, 2), niz(10));

I, sukladno tome, s određenim ključevima:

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

U ovom slučaju, pronalaženje maksimalne i minimalne vrijednosti je malo teško, ali također moguće.

Prvo, kako bismo ovdje pronašli maksimum i minimum, transformiramo niz u jednodimenzionalni:

$out_array = niz(); foreach($my_array kao $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

Dizajn radi za obje gore navedene opcije. Zatim ćemo, slijedeći primjer jednodimenzionalnog niza, prikazati podatke koji su nam potrebni:

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

Kao mali bonus, dat ću primjer još jednog popularnog dvodimenzionalnog niza:

$my_array = array(array("id" => "1", "date" => "2018-03-19", "price" => "5",), array ("id" => "2" , "datum" => "2018-03-19", "price" => "50",), niz ("id" => "3", "date" => "2018-03-19", " cijena" => "25",));

Pod popularnošću ne mislim na sadržaj, već na primjer njegove strukture. Recimo da ovdje trebate ispisati maksimalne i minimalne vrijednosti samo tipki "cijena".

Prvo što trebate u ovom slučaju je dobiti novi niz samo s ovim podacima:

$numbers = array_column($my_array, "cijena");

Echo min($brojevi); // Ispis 5 echo max($numbers); // Ispis 50

Ovo dovršava rad s nizovima u PHP-u. Ako je iznenada struktura vašeg niza drugačija i ne znate kako je obraditi, postavite odgovarajuće pitanje u komentarima, pokušat ću vam pomoći.

Pronalaženje najveće i najmanje vrijednosti jednodimenzionalnog niza u JavaScriptu

Za razliku od PHP-a, vrsta nizova u JavaScriptu mnogo je jednostavnija, a jednostavan jednodimenzionalni niz će izgledati ovako:

Var my_array = ;

Ovdje nisu naznačeni indeksi. Kako bismo pronašli maksimalnu i minimalnu vrijednost u ovom nizu, napisat ćemo dvije vlastite jednostavne funkcije:

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

koji se koriste za pronalaženje vrijednosti koje su nam potrebne. Upotreba je također jednostavna:

Upozorenje(nizMax(moj_niz)); // Ispis 74 alert(arrayMin(my_array)); // Ispis 2

U ovom slučaju, brojevi "2" i "74" bit će prikazani na zaslonu kao minimalna i maksimalna vrijednost niza.

Pronalaženje najveće i najmanje vrijednosti višedimenzionalnog niza u JavaScriptu

Višedimenzionalni nizovi u JavaScriptu jednako su jednostavni i izgledaju ovako:

Var my_array = [ , , ];

Pokušajmo ovdje pronaći maksimum i minimum. Za početak ćemo napisati funkciju kojom ćemo, prema shemi koja nam je već poznata, prikazati ovaj niz kao jednodimenzionalan:

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

I koristeći objekt " matematika"dobijamo vrijednosti koje su nam potrebne:

Var min = Math.min.apply(null, out_array); // Dohvati 2 var max = Math.max.apply(null, out_array); // Dohvati 74 upozorenja (max); // Ispis 74 na ekranu

Zapravo, umjesto objekta " matematika„Možete koristiti naše funkcije koje se koriste u verziji s jednodimenzionalnim nizom, ali kako biste shvatili da se svaki problem može riješiti na više načina – ovdje sam dao malo drugačije rješenje.

Pa, po tradiciji - mali bonus. Razmotrimo još jedan višedimenzionalni niz sa sljedećom strukturom:

Var my_array = [["Jedan", "2018-03-19", 5], ["Dva", "2018-03-19", 50], ["Tri", "2018-03-19", 25 ], ];

Kao što vidimo, numeričke vrijednosti u svakom nizu su na trećem mjestu. Napišimo neki kod i dobijmo odgovarajuće vrijednosti samo iz ovih podataka:

Var min = +Beskonačno; var max = -Beskonačno; moj_niz.zaSvaki(funkcija(stavka) ( if(+stavka< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Traženje maksimalne vrijednosti ) )); upozorenje(min+" "+max); // Prikaz rezultata na ekranu

to je sve Ne zaboravite podržati projekt. Čeka vas puno zanimljivih stvari!

(PHP 4, PHP 5, PHP 7)

min — Pronalazi najmanju vrijednost

Opis

Ako je proslijeđen samo jedan argument - niz brojeva, min() vraća najmanji od njih. Ako je prvi argument cijeli broj ili float, tada mora postojati barem još jedan. U ovom slučaju funkcija min() vratit će najmanji od njih.

Komentar:

Vrijednosti različitih vrsta uspoređuju se pomoću standardna pravila usporedbe. Na primjer, nenumerički niz ( niz ) uspoređivat će se s cijelim brojem ( cijeli broj ) kao da je jednaka 0 , ali nekoliko redaka ( niz ) uspoređivat će se abecednim redom. Povratna vrijednost će zadržati izvorni tip varijable, bez konverzije.

Povratne vrijednosti

Funkcija min() vraća vrijednost parametra koji se smatra "najmanjim" prema standardnim pravilima usporedbe. Ako je nekoliko vrijednosti različitih vrsta međusobno jednako (tj. 0 I "abc"), onda će prvi biti vraćen.

Primjeri

Primjer #1 Primjer upotrebe min()

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

// Niz "hello", u usporedbi s int, tretira se kao 0
// Budući da su obje vrijednosti jednake, redoslijed parametara određuje rezultat
echo min(0, "zdravo"); // 0
echo min ("zdravo", 0); // zdravo

// Ovdje uspoređujemo -1< 0, поэтому -1 является наименьшим значением
echo min ("zdravo" , - 1); // -1

// Kada se uspoređuju nizovi različitih duljina, min će vratiti kraći
$val = min (niz(2, 2, 2), niz(1, 1, 1, 1)); // niz(2, 2, 2)

// Višestruki nizovi iste duljine uspoređuju se s lijeva na desno
// za ovaj primjer: 2 == 2, ali 4< 5
$val = min (niz(2, 4, 8), niz(2, 5, 1)); // niz(2, 4, 8)

// Ako se niz i ne-niz uspoređuju, niz se nikada neće vratiti
// jer se nizovi smatraju većim od svih ostalih vrijednosti
$val = min ("string", array(2, 5, 7), 42); //niz

// Ako je jedan argument NULL ili booleov, usporedit će se s ostalima
// koristeći pravilo FALSE< TRUE, учитывая остальные типы аргументов
// U navedenom primjeru, -10 i 10 se tretiraju kao TRUE
$val = min (- 10, FALSE, 10); // NETOČNO
$val = min (- 10, NULL, 10); // NULL

// s druge strane, 0 se tretira kao FALSE, tako da je "manje" od TRUE
$val = min(0, TRUE); // 0
?>