internet Okná Android
Rozbaľovať

PHP Nájdite maximálnu hodnotu v poli. PHP Získajte minimálne a maximálne hodnoty v dvojrozmernom asociatívnom poli

(PHP 4, PHP 5, PHP 7)

min - Nájde najmenšiu hodnotu

Popis

Ak sa ako argumenty prenáša iba jeden - pole čísel, min () Vráti najmenšie z nich. Ak je prvý argument celé číslo alebo plavák, potom musí byť aspoň jeden. V tomto prípade funkcia min () Vrátiť najmenšie z nich.

Komentár:

Hodnoty rôznych typov sa porovnávajú pomocou štandardných pravidiel porovnávania. Nie je napríklad numerický reťazec ( reťazec) bude porovnávať celé číslo ( celé číslo) Ako keby bol rovnaký 0 , ale niekoľko riadkov ( reťazec) Porovnajte abecedne. Návratová hodnota uloží počiatočný typ premennej, bez konverzie.

Návratových hodnôt

Funkcia min () Vráti hodnotu parametra, ktorý je považovaný za "najmenší" podľa štandardných pravidiel porovnávania. Ak sa navzájom rovná niekoľko hodnôt rôznych typov (t.j. 0 a "ABC") Prvý bude vrátený.

Príklady

Príklad # 1 Príklad použitia min ()

eCHO MIN (2, 3, 1, 6, 7); // jeden
echo min (pole (2, 4, 5)); // 2.

// reťazec "ahoj", v porovnaní s int sa považuje za 0
// Pretože obe hodnoty sú rovnaké, poradie parametrov určuje výsledok
eCHO MIN (0, "Ahoj"); // 0.
eCHO MIN ("Ahoj", 0); // Ahoj.

// tu porovnávame -1< 0, поэтому -1 является наименьшим значением
eCHO MIN ("Ahoj", - 1); / / -one

// Pri porovnávaní polí rôznych dĺžok sa min.
$ Val \u003d min (pole (2, 2, 2), pole (1, 1, 1, 1)); // Array (2, 2, 2)

// niekoľko polí rovnakej dĺžky sa porovnávajú zľava doprava
// Pre tento príklad: 2 \u003d\u003d 2, ale 4< 5
$ Val \u003d min (pole (2, 4, 8), pole (2, 5, 1)); // Array (2, 4, 8)

// ak sa porovnávajú pole a non-pole, potom sa pole nikdy vráti
// Keďže polia sú považované za veľké ako všetky ostatné hodnoty
$ Val \u003d min ("reťazec", pole (2, 5, 7), 42); // reťazec

// Ak je jeden argument null alebo boolean, porovná sa so zvyškom
// pomocou falošného pravidla< TRUE, учитывая остальные типы аргументов
// v príklade -10 a 10 sa považujú za liečených
$ val \u003d min (- 10, false, 10); // FALSE
$ Val \u003d min (- 10, , 10); // NULOVÝ.

// na druhej strane 0 sa považuje za nepravdivé, takže je to "menej" ako pravda
$ Val \u003d min (0, TRUE); // 0.
?>

Mám v tomto formáte pole:

Array (\u003d\u003e Array (\u003d\u003e 117 \u003d\u003e Sieť \u003d\u003e 16) \u003d\u003e Array (\u003d\u003e 188 \u003d\u003e FTP \u003d\u003e 23) \u003d\u003e Array (\u003d\u003e 189 \u003d\u003e Internet \u003d\u003e 48))

Existuje dobrý spôsob, ako získať minimálne a maximálne hodnoty "počítania"? Mohol by som to urobiť niekoľko cyklov, ale myslel som, že by to mohol byť najlepší spôsob.

Na rozdiel od iných nie je možné použiť funkcie min () / max () pre tento problém, pretože tieto funkcie nerozumejú poliam dát prenášaných v nich (pole). Tieto funkcie pracujú len pre skalárne prvky poľa.

Štart Obrázok

Dôvod, prečo sa používanie Min () a Max () zrejme udáva správnu odpoveď, patrí do polí typu casting na celé čísla, ktoré sú neisté správanie:

Konverzné správanie celočícha nie je definované pre iné typy. Nespoliehajte sa na akékoľvek pozorované správanie, pretože sa môže zmeniť bez varovania.

Moje vyhlásenie o typovom odlievaní bolo nesprávne. V skutočnosti, min () a max () pracujú s poliami, ale nie ako opuje svoju prácu. Pri použití min () a max () s niekoľkými poliami alebo radmi polí, prvky sú porovnané s prvkom zľava doprava:

$ Val \u003d min (pole (2, 4, 8), pole (2, 5, 1)); // Array (2, 4, 8) / * * Prvý prvok v porovnaní s prvým prvkom: 2 \u003d\u003d 2 * druhý prvok v porovnaní s druhým prvkom: 4< 5 * first array is considered the min and is returned */

OP preložený do problému ukazuje, prečo sa zdá, že priame používanie min () a max () správneho výsledku. Prvé prvky poľa sú ID, tak min () a max () najprv ich porovnávajú, vďaka tomu, vedú k správnemu výsledku, pretože najnižší ID je ten, kto má najnižší počet a najvyššie ID je ten ktorý má najvyšší možný počet.

End Upraviť.

Správnym spôsobom je použitie cyklu.

$ A \u003d pole (pole ("ID" \u003d\u003e 117, "Názov" \u003d\u003e "Sieť", "Count" \u003d\u003e 16), Array ("ID" \u003d\u003e 188, "Názov" \u003d\u003e "FTP", " Počet "\u003d\u003e 23), pole (" ID "\u003d\u003e 189," názov "\u003d\u003e" internet "," počet "\u003d\u003e 48)); $ min \u003d php_int_max; $ Max \u003d 0; FOREACH ($ A AS $ I) ($ MIN \u003d MIN ($ MIN, $ I ["COUNT"]); $ max \u003d max ($ max, $ i ["počet"]);)

Môžete použiť funkcie max () a min ().

Čo ste robili s niekoľkými cyklami? Jeden je dosť 🙂

  1. Získajte prvý prvok vypočítaním účtu o $ min a max
  2. iterácie pre zvyšok, porovnať meradlo s každým $ min a $ max, ak je menej / viac, priradiť novú hodnotu účtu

Môžete použiť funkcie max / min, pretože vracajú pole obsahujúce maximálne / minimálne každého indexu. Váš príklad by mal vrátiť pole (189, "siete", 48) pre max. Potom môžete zachytiť účet z tohto poľa.

Aktualizujte to nefunguje, ako som vylúčil. Príklad referenčnej stránky je zavádzajúci a príklad dáva správny výsledok pomocou max, ale je to len náhoda.

Vyzerá to, že nemôžete používať max () pre 2D pole. Jednoducho vráti najväčšie pole, nie max () každého indexu (ako je uvedené v niekoľkých odpovediach).

$ Count \u003d pole (); FOREACH ($ ARM AS $ _ARR) ($ COUNT \u003d $ _ARR ["COUNT"];) VAR_DUMP (max ($ count), min ($ count));

Existuje ekvivalent vstavaný Funkcia pre to? (Aj bez možnosti testovanie)

/ ** * * extrahuje stĺpec z 2D poľa s voliteľnou voľbou cez iného stĺpca * * * @param $ Array pole na extrakciu z * @param $ $ Acolname Názov stĺpca pre extrakciu. "O_NAME" * @param $ Accomtest (voliteľný) Názov stĺpca na vykonanie testu. "O_ID" * @param $ ATEST (voliteľný) reťazec pre test ex. "\u003e \u003d 10", "\u003d\u003d". "$ Toto" "" * @return 1D pole s extrahovaným stĺpcom * @Access Public * / Funkcia ECTRACTCOLFOLHROMAMARAY ($ AARRAY, $ ACOLNAME, $ ACOLTEST \u003d "", $ ATEST \u003d "") ($ MRES \u003d ARRAY (); FORECH ($ AARRY AS $ ROCE) (ak ((($ Actooltest \u003d\u003d ") || (eval (" Return ". $ Row [$ Actooltest]. $ ACTEST , ";"))) ($ MRES \u003d $ Row [$ Acolname];)) Spätné $ MRES;) // ExtractcolfRomarray

Polia sú jedným z pohodlných štruktúrovaných metód ukladania informácií. Každý prvok takéhoto poľa má svoje vlastné miesto, vlastný kľúč a hodnotu. Obsah polí sa môže líšiť, ako napríklad základňa čísel, mien alebo jednoduchých číselných hodnôt. Hovoríme o čísle, môžeme dostať až do všetkých druhov úloh, napríklad výstup maximálnej alebo minimálnej hodnoty. O tom, ako sa to rieši v rôznych programovacích jazykoch, dnes a bude diskutovaná.

Nájdeme najväčšiu a najmenšiu hodnotu jednorozmerného poľa na PHP

Všetky polia sa líšia v ich štruktúre. Zvážte dva jednoduché jednorozmerné pole, z ktorých jeden neobsahuje klávesy:

$ My_array \u003d pole (22, 24, 37, 74, 23, 2, 10);

a jeden identický s predchádzajúcim, ale už s kľúčmi:

$ My_array \u003d pole (1 \u003d\u003e 22, 2 \u003d\u003e 24, 3 \u003d\u003e 37, 4 \u003d\u003e 74, 5 \u003d\u003e 23, 6 \u003d\u003e 2, 7 \u003d\u003e 10);

Pokúsime sa odstrániť maximálnu a minimálnu hodnotu tohto poľa. Na to použijeme štandardné funkcie " max"A" min."Resp.

Echo max ($ my_array); // stiahnuť 74 echo min ($ my_array); // stiahnuť 2.

Ak podrobnejšie považujeme za druhé pole, potom môžeme získať kľúč maximálnych alebo minimálnych hodnôt.

V príklade poľa

$ My_array \u003d pole (1 \u003d\u003e 22, 2 \u003d\u003e 24, 3 \u003d\u003e 37, 4 \u003d\u003e 74, 5 \u003d\u003e 23, 6 \u003d\u003e 2, 7 \u003d\u003e 10);

bude to vyzerať takto:

$ max \u003d array_Keys ($ my_array, max ($ my_array)); $ max \u003d $ max; // maximálna hodnota $ min \u003d array_keys ($ my_array, min ($ my_array)); $ min \u003d min min; // kľúč minimálnej hodnoty echo $ max; // stiahnuť výsledok maximálnej hodnoty

V súlade s tým je kľúčom maximálnej hodnoty "4" a minimum - "6".

Nájdeme najväčší a najmenší význam multidimenzionálneho poľa na PHP

Multidimenzionálne polia sa vyznačujú ich hniezdom. Napríklad dvojrozmerné pole bude vyzerať nasledovne bez tlačidiel:

$ My_Array \u003d pole (pole (22, 24, 37), pole (74, 23, 2), pole (10));

A teda s niektorými kľúčmi:

$ My_Array \u003d pole (pole (1 \u003d\u003e 22, 2 \u003d\u003e 24, 3 \u003d\u003e 37), pole (4 \u003d\u003e 74, 5 \u003d\u003e 23, 6 \u003d\u003e 2), pole (7 \u003d\u003e 10));

V tomto prípade je nájdenie maximálnych a minimálnych hodnôt trochu ťažké, ale tiež naozaj.

Ak chcete začať, nájsť maximálne a minimálne, transformujeme pole na jednoorozmerné:

$ Out_array \u003d pole (); Foreach ($ my_array ako $ sub_array) ($ out_array \u003d array_merge ($ out_array, $ sub_array);)

Dizajn pracuje pre vyššie uvedené možnosti. A ďalej, podľa príkladu jednorozmerného poľa, stiahnuť údaje, ktoré potrebujeme:

Echo max ($ out_array); // stiahnuť 74 echo min ($ out_array); // stiahnuť 2.

Ako malý bonus, uvediem príklad ďalšieho populárneho dvojrozmerného poľa:

$ My_array \u003d pole (pole ("ID" \u003d\u003e "1", "dátum" \u003d\u003e "2018-03-19", "cena" \u003d\u003e "5",), pole ("ID" \u003d\u003e "2" , "Dátum" \u003d\u003e "2018-03-19", "cena" \u003d\u003e "50",), pole ("ID" \u003d\u003e "3", "dátum" \u003d\u003e "2018-03-19", " Cena "\u003d\u003e" 25 ",));

Pred popularitou nemám obsah, ale príklad jeho štruktúry. Predpokladajme, že tu potrebujete vykonať výstup maximálnej a minimálnej hodnoty kľúčovej "ceny".

Prvá vec, ktorú potrebujete v tomto prípade, je získať nové pole len s týmito údajmi:

$ Čísla \u003d array_column ($ my_array, "cena");

Echo min (čísla $); // stiahnuť 5 echo max (čísla $); // stiahnuť 50.

Na tomto je dokončená práca s PHP poliami. Ak je náhle štruktúra vášho poľa iná a neviete, ako ho spracovať - \u200b\u200bpoložte príslušnú otázku v komentároch, pokúsim sa vám pomôcť.

Nájdeme najväčšiu a najmenšiu hodnotu jednorozmerného poľa na Javascript

Na rozdiel od PHP, v Javascript, typ polí je oveľa jednoduchší a jednoduché jednorozmerné pole bude vyzerať takto:

Var my_array \u003d;

Indexy tu nie sú špecifikované. Ak chcete nájsť maximálnu a minimálnu hodnotu v tomto poli, napíšte dve jednoduché funkcie:

Funkcia ArrayMAX (RETURN ARRAY.REDUCE (RETURN MATHY.MAX (A, B);));) Funkcia Arraymin (Array) (RETURN ARRAY.REDUCE (funkcia (A, B) (RETURN MATH MATHY.MIN (A, B); ));)

ktoré sa používajú na nájdenie hodnôt, ktoré potrebujeme. Použitie je tiež jednoduché:

ALERT (ARRAYMAX (MY_ARAY)); // stiahnuť 74 upozornenie (Arraymin (My_Array)); // stiahnuť 2.

V tomto prípade sa na obrazovke zobrazí číslo "2" a "74" ako minimálna a maximálna hodnota poľa.

Nájdeme najväčší a najmenší význam multidimenzionálneho poľa na Javascript

Multimenzionálne polia v Javascript sú také jednoduché a vyzerajú takto:

Var my_array \u003d [,,];

Pokúsme sa tu nájsť maximálne a minimum. Ak chcete začať, budeme píšeme funkciu, s ktorou sa systém zvyčajne zavádza tento pole ako známy systém ako jednorozmerné:

Var out_array \u003d; My_array.foreach (funkcia (v) (array.prototyp.push.APLOPLE (OUT_ARARY, V););

As pomocou objektu " Matematika."Dostaneme hodnoty, ktoré potrebujeme:

Var min \u003d math.min.apply (, out_array); // Získavame 2 var Max \u003d Math.Max.APPLE (NULL, OUT_ARRAY); // Dostať 74 upozornenie (max); // stiahnuť 74 na obrazovke

V skutočnosti namiesto objektu " Matematika."Naše funkcie môžete použiť v možnosti s jednorozmerným poľa, ale že chápete, že každá úloha môže byť vyriešená niekoľkými spôsobmi - tu som priniesol trochu iné riešenie.

No, podľa tradície, malý bonus. Zvážte ďalšie viacrozmerné pole s takýmto štruktúrou:

Var my_array \u003d [["jeden", "2018-03-19", 5], ["dva", "2018-03-19", 50], ["tri", "2018-03-19", 25 ],];

Ako vidíme, číselné hodnoty v každom poli sú na treťom mieste. Poďme napísať kód a získať príslušné hodnoty iba týchto údajov:

Var min \u003d + nekonečno; var max \u003d -Infinity; My_array.foreach (funkcia (položka) (ak (+ položka)< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item > Max) (max \u003d + položka; // hľadáme maximálnu hodnotu)); ALERT (MIN + "" + max); // Zobrazte výsledok na obrazovke

To je všetko. Nezabudnite na podporu projektu. Predtým očakávate veľa zaujímavých vecí!