internetul Windows. Android

PHP găsește valoarea maximă în matrice. PHP obține valori minime și maxime într-o matrice asociativă bidimensională

(PHP 4, PHP 5, PHP 7)

min - Găsește cea mai mică valoare

Descriere

Dacă numai unul este transmis ca argumente - o serie de numere, min () Returnează cele mai mici dintre ele. Dacă primul argument este întreg sau flotor, atunci trebuie să fie cel puțin încă unul. În acest caz, funcția min () Întoarceți cele mai mici dintre ele.

cometariu:

Valorile diferitelor tipuri sunt comparate utilizând regulile de comparare standard. De exemplu, nu un șir numeric ( Şir) va fi comparat cu un număr întreg ( întreg) ca și cum ar fi egal 0 , dar mai multe linii ( Şir) Comparați alfabetic. Valoarea returnă va salva tipul inițial de variabilă, fără conversie.

Valori de returnare

Funcţie min () Returnează valoarea parametrului care este considerat "cel mai mic" în conformitate cu regulile standard de comparație. Dacă mai multe valori de tipuri diferite egale între ele (adică 0 și "ABC") Primul va fi returnat.

Exemple

Exemplu # 1 Exemplu de utilizare min ()

echo min (2, 3, 1, 6, 7); // unu
echo min (matrice (2, 4, 5)); // 2.

// string "salut", în comparație cu int, este considerat ca 0
// Din moment ce ambele valori sunt egale, ordinea parametrilor determină rezultatul
echo min (0, "salut"); // 0.
echo Min ("Bună ziua", 0); // Buna ziua.

// aici comparăm -1< 0, поэтому -1 является наименьшим значением
echo Min ("Bună ziua", - 1); // -unu

// Când comparăm garniturile de diferite lungimi, min se va întoarce mai puțin lung
$ Val \u003d min (matrice (2, 2, 2), matrice (1, 1, 1, 1)); // matrice (2, 2, 2)

// mai multe matrice de aceeași lungime sunt comparate de la stânga la dreapta
// Pentru acest exemplu: 2 \u003d\u003d 2, dar 4< 5
$ val \u003d min (matrice (2, 4, 8), matrice (2, 5, 1)); // matrice (2, 4, 8)

// Dacă o matrice și non-matrice sunt comparate, atunci matricea nu va fi returnată niciodată
// Deoarece matricele sunt considerate mari decât toate celelalte valori
$ val \u003d min ("șir" (string "(2, 5, 7), 42); // șir

// Dacă un argument este nul sau boolean, se va compara cu restul
// Folosind regula falsă< TRUE, учитывая остальные типы аргументов
// în exemplul -10 și 10 sunt considerate a fi tratate
$ val \u003d min (- 10, fals, 10); // Fals
$ val \u003d min (- 10, nul, 10); // NUL.

// Pe de altă parte, 0 este considerat fals, deci este "mai puțin" decât adevărat
$ Val \u003d min (0, adevărat); // 0.
?>

Am o matrice în acest format:

Array (\u003d\u003e Array (\u003d\u003e 117 \u003d\u003e Networking \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))

Dacă există o mod bun Obțineți valorile minime și maxime ale "numărului"? Aș putea face acest lucru folosind mai multe cicluri, dar am crezut că ar putea fi cel mai bun mod.

Spre deosebire de alții, nu puteți utiliza funcțiile min () / max () pentru această problemă, deoarece aceste funcții nu înțeleg că arrele de date transmise în ele (matrice). Aceste funcții funcționează numai pentru elementele scalare ale matricei.

Începeți imaginea

Motivul pentru care utilizarea min () și max () aparent dă răspunsul corect, aparține rețelelor de turnare de tip la numerele numerele incerte:

Comportamentul de conversie al integerului nu este definit pentru alte tipuri. Nu vă bazați pe un comportament observat, deoarece se poate schimba fără avertisment.

Declarația mea de mai sus despre turnarea de tip a fost greșită. De fapt, min () și max () lucrează cu matrice, dar nu modul în care op are nevoie de munca lor. Când utilizați min () și max () cu mai multe matrice sau o gamă de matrice, elementele sunt comparate cu elementul din stânga la dreapta:

$ val \u003d min (matrice (2, 4, 8), matrice (2, 5, 1)); // matrice (2, 4, 8) / * * primul element comparativ cu primul element: 2 \u003d\u003d 2 * al doilea element comparativ cu al doilea element: 4< 5 * first array is considered the min and is returned */

PO-ul tradus în problemă arată de ce utilizarea directă a min () și max () pare să dea rezultatul corect. Primele elemente ale matricei sunt ID, deci min () și max () mai întâi le compară, apropo, duc la rezultatul corect, deoarece cel mai mic ID este cel care are cel mai mic număr și cel mai mare ID este unul care are cel mai mare număr posibil.

End Editare.

Modul corect este de a folosi ciclul.

$ a \u003d matrice (matrice (id "\u003d\u003e 117," Nume "\u003d\u003e" Networking "," Count "\u003d\u003e 16), Array (" ID "\u003d\u003e 188," Nume "\u003d\u003e FTP", " Numără "\u003d\u003e 23), matrice (" ID "\u003d\u003e 189," Nume "\u003d\u003e" Internet "," Count "\u003d\u003e 48)); $ min \u003d php_int_max; $ Max \u003d 0; Foreach ($ a ca $ i) ($ min \u003d min ($ min, $ i ["număr"]); $ max \u003d max ($ max, $ i ["număr"]);)

Puteți utiliza funcțiile max () și min ().

Ce ați făcut cu mai multe cicluri? Unul este destul de suficient

  1. Obțineți primul element prin calcularea contului ambelor $ min și max
  2. iterații pentru restul, comparați contorul cu fiecare $ min și $ max, dacă este mai mult / mai mult, atribuiți o nouă valoare contului

Puteți utiliza funcțiile max / min pe măsură ce returnează o matrice care conține maxim / minim de fiecare indice. Exemplul dvs. ar trebui să returneze matrice (189, "Networking", 48) pentru max. Apoi, puteți captura contul din această matrice.

Actualizați acest lucru nu funcționează, așa cum am exclus. Un exemplu de pagină de referință este înșelătoare, iar exemplul dă rezultatul corect folosind max, dar este doar o coincidență.

Se pare că nu puteți utiliza max () pentru o matrice 2D. Pur și simplu returnează cea mai mare matrice, nu cea mai mare () a fiecărui indice (așa cum este indicat în mai multe răspunsuri).

$ Numără \u003d matrice (); foreach ($ arr ca $ _arr) ($ numărare \u003d $ _arr ["număr"];) var_dump (max (numărul $), min ($ număr));

Există echivalent incorporat Funcție pentru asta? (chiar și fără posibilitatea testarea)

. "O_name" * @param $ $ acoltest (opțional) nume de coloană pentru a efectua un test, de exemplu. "O_ID" * @param $ atest (opțional) șir pentru testul Ex. "\u003e \u003d 10", "\u003d\u003d" $ Atest \u003d "") ($ MRES \u003d matrice (); foreach ($ Aarray ca Row $) (dacă ($ acoltest \u003d\u003d ") || (Eval (return". $ Rând [$ Acoltest]. $ ATEST . ";"))) ($ MRES \u003d $ rând [$ acolname];)) returnați $ Mres;) // extractcolfromarray

Arrays sunt una dintre metodele convenabile de stocare structurate. Fiecare element al unei astfel de matrice are propriul loc, propria sa cheie și valoare. Conținutul matricelor poate fi diferit, deoarece, de exemplu, baza de numere, nume sau valori numerice simple. Vorbind despre numărul, putem ajunge la tot felul de sarcini, de exemplu, rezultatul valorii maxime sau minime. Despre cum este rezolvată limbi diferite Programarea, astăzi și va fi discutată.

Găsim cea mai mare și cea mai mică valoare a unei matrice unic dimensionale pe PHP

Toate matricele diferă în structura lor. Luați în considerare două mastere simple unidimensionale, dintre care una nu conține taste:

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

Și una identică cu cea precedentă, dar deja cu cheile:

$ My_array \u003d matrice (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);

Vom încerca să eliminăm valoarea maximă și minimă a acestei matrice. Pentru a face acest lucru, vom folosi funcții standard " max."Și" min."Respectiv:

Echo max ($ my_array); // retrage 74 Echo min ($ my_array); // retrage 2.

Dacă luăm în considerare în detaliu cea de-a doua matrice, atunci, ca rezultat, putem obține cheia valorilor maxime sau minime.

Pe exemplul matricei

$ My_array \u003d matrice (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);

va arăta astfel:

$ max \u003d arrayy_keys ($ my_array, max ($ my_array)); $ max \u003d $ max; // valoarea maximă de $ min \u003d array_keys ($ my_array, min ($ my_array)); $ min \u003d $ min; // cheia valorii minime a ECHO $ \u200b\u200bmax; // retrage rezultatul valorii maxime

În consecință, cheia valorii maxime este "4", iar minimul - "6".

Găsim cea mai mare și cea mai mică importanță a matricei multidimensionale pe PHP

Măsurile multidimensionale sunt caracterizate de cuiburile lor. De exemplu, o matrice bidimensională va arăta după cum urmează fără taste:

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

Și, în consecință, cu unele taste:

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

În acest caz, găsirea valorilor maxime și minime este puțin dificilă, dar și într-adevăr.

Pentru a începe, pentru a găsi un maxim și minim aici, transformăm o matrice la unidimensional:

$ Out_array \u003d matrice (); Foreach ($ my_array ca $ sub_array) ($ out_array \u003d array_merge ($ out_array, $ sub_array);)

Designul funcționează pentru ambele opțiuni de mai sus. Și în continuare, urmând exemplul unei mastere unidimensionale, retrage datele de care avem nevoie:

Echo max ($ out_array); // retrageți 74 Echo Min ($ out_array); // retrage 2.

Ca un mic bonus, voi da un exemplu al unei alte matrice populare bidimensionale:

$ My_array \u003d matrice (matrice (id "\u003d\u003e" 1 "," data "\u003d\u003e" 2018-03-19 "," preț "\u003d\u003e" 5 ",), matrice (" id "\u003d\u003e" 2 " , "Data" \u003d\u003e "2018-03-19", "Pret" \u003d\u003e 50 ",), Array (" ID "\u003d\u003e" 3 "," Data "\u003d\u003e" 2018-03-19 "," Prețul "\u003d\u003e" 25 ",));

Înainte de popularitate, nu mă refer la conținutul, ci un exemplu al structurii sale. Să presupunem că aici trebuie să efectuați ieșirea tastaturii de valoare maximă și minimă "preț".

Primul lucru de care aveți nevoie în acest caz este obținerea unei noi matrice numai cu aceste date:

$ Numere \u003d array_column ($ my_array, "preț");

Echo min (numere $); // retrageți 5 ECHO MAX (numere $); // retrage 50.

În acest sens, lucrați cu matrice PHP este terminat. Dacă dintr-o dată structura matricei dvs. este diferită și nu știți cum să o procesați - întrebați întrebarea potrivită în comentarii, voi încerca să vă ajut.

Găsim cea mai mare și cea mai mică valoare a unei matrice unic dimensionale pe JavaScript

Spre deosebire de PHP, în JavaScript, tipul de masterat este mult mai ușor, iar o matrice simplă unidimensională va arăta astfel:

Vary_array \u003d;

Indicii de aici nu sunt specificați. Pentru a găsi valoarea maximă și minimă în această matrice, scrieți două dintre caracteristicile dvs. simple:

Funcție arraymax (retur array.reduce (retur matemath.max (A, B);)));) )););)

care sunt folosite pentru a găsi valorile de care avem nevoie. Utilizarea este, de asemenea, simplă:

Alertă (Arraymax (My_Array)); // retrage 74 Alert (Arraymin (My_Array)); // retrage 2.

În acest caz, numărul "2" și "74" ca valoare minimă și maximă a matricei va fi afișată pe ecran.

Noi găsim cea mai mare și cea mai mică semnificație a matricei multidimensionale pe JavaScript

Măsurile multidimensionale din JavaScript sunt la fel de simple și arată astfel:

Vary my_array \u003d [,];

Să încercăm să găsim un loc maxim și minim aici. Pentru a începe cu, vom scrie o funcție cu care schema introduce, de obicei, această matrice ca o schemă familiară ca o singură dimensiune:

Var iet_array \u003d; My_array.Forech (funcția (v) (array.protype.push.Apply (out_array, v);)));

Și cu ajutorul obiectului " Matematică."Obținem valorile de care avem nevoie:

Var min \u003d mateth.min.Apply (, out_array); // obținem 2 var max \u003d mateth.max.aplicați (, out_array); // primiți 74 de alertă (max); // retrageți 74 pe ecran

De fapt, în loc de obiect " Matematică."Puteți folosi funcțiile utilizate într-o opțiune cu o matrice unidimensională, dar că înțelegeți că orice sarcină poate fi rezolvată în mai multe moduri - aici am adus o soluție diferită.

Potrivit tradiției, un mic bonus. Luați în considerare o altă matrice multidimensională cu o astfel de structură:

Vary my_array \u003d [[unul "," 2018-03-19 ", 5], [" Două "," 2018-03-19 ", [" Trei "," 2018-03-19 ", 25 ];];

După cum vedem, valorile numerice din fiecare matrice sunt pe locul trei. Să scriem codul și să obținem valorile corespunzătoare numai ale acestor date:

Var min \u003d + infinit; var max \u003d -infinity; My_array.Foreceh (funcția (element) (dacă (+ element< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item > Max) (max \u003d + element; // căutăm valoarea maximă))); Alertă (min + "" + max); // afișați rezultatul pe ecran

Asta e tot. Nu uitați să sprijiniți proiectul. Înainte de tine așteaptă multe lucruri interesante!