PHP Obțineți valorile minime și maxime într-o matrice asociativă bidimensională. Min - Găsește cea mai mică valoare PHP din numărul de valori minime din matrice

(PHP 4, PHP 5, PHP 7)

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

Descriere

Dacă se transmite un singur argument - o matrice de numere, min() returnează cel mai mic dintre ei. Dacă primul argument este un număr întreg sau flotant, atunci trebuie să existe cel puțin încă unul. În acest caz, funcția min() va returna cel mai mic dintre ei.

cometariu:

Valorile de diferite tipuri sunt comparate folosind reguli standard de comparare. De exemplu, un șir nenumeric ( şir) va fi comparat cu un număr întreg ( întreg) de parcă ar fi egal 0 , dar mai multe rânduri ( şir) vor fi comparate alfabetic. Valoarea returnată va păstra tipul original al variabilei, fără conversie.

Valori returnate

Funcţie min() returnează valoarea parametrului care este considerat „cel mai mic” conform regulilor standard de comparație. Dacă mai multe valori de diferite tipuri sunt egale între ele (de ex. 0 Și "abc"), atunci primul va fi returnat.

Exemple

Exemplul #1 Exemplu de utilizare min()

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

// Șirul „hello”, în comparație cu int, este tratat ca 0
// Deoarece ambele valori sunt egale, ordinea parametrilor determină rezultatul
echo min(0, „bună ziua”); // 0
echo min ("bună ziua", 0); // Buna ziua

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

// Când se compară matrice de lungimi diferite, min va returna cel mai scurt
$val = min (array(2 , 2 , 2 ), array(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 == 2, dar 4< 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); // matrice (2, 4, 8)

// Dacă se compară un tablou și un non-matrice, tabloul nu va fi returnat niciodată
// deoarece tablourile sunt considerate mai mari decât toate celelalte valori
$val = min ("șir" , array(2 , 5 , 7 ), 42 ); //şir

// Dacă un argument este NULL sau boolean, va fi comparat cu celelalte
// folosind regula FALSE< TRUE, учитывая остальные типы аргументов
// În exemplul dat, -10 și 10 sunt tratate ca TRUE
$val = min (- 10 , FALSE , 10 ); // FALS
$val = min (- 10 , NULL , 10 ); // NUL

// pe de altă parte, 0 este tratat ca FALS, deci este „mai puțin” decât TRUE
$val = min(0, TRUE); // 0
?>

Matricele sunt una dintre modalitățile structurate convenabile de stocare a informațiilor. Fiecare element al unui astfel de tablou are propriul său loc, propria sa cheie și valoare. Conținutul tablourilor poate fi diferit, cum ar fi, de exemplu, o bază de date de numere, nume sau valori numerice simple. Vorbind de numere, ne putem confrunta cu diverse tipuri de sarcini, de exemplu, deducerea valorii maxime sau minime. Astăzi vom vorbi despre cum se rezolvă acest lucru în diferite limbaje de programare.

Găsirea celei mai mari și mai mici valori a unui tablou unidimensional în PHP

Toate tablourile diferă în structura lor. Luați în considerare două tablouri simple unidimensionale, dintre care una nu conține chei:

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

si unul identic cu cel precedent, dar cu chei:

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

Să încercăm să afișăm valorile maxime și minime ale acestei matrice. Pentru a face acest lucru, vom folosi funcții standard " max" Și " min„, respectiv:

Echo max($my_array); // Printează 74 echo min($my_array); // Imprimare 2

Dacă aruncăm o privire mai atentă la a doua matrice, atunci, ca rezultat, putem obține cheia valorilor maxime sau minime.

Folosind o matrice ca exemplu

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

va arata asa:

$max = chei_matrice($matrice_mea, max($matrice_mea)); $max = $max;// Cheia valorii maxime $min = chei_matrice($matrice_mea, min($matrice_mea)); $min = $min; // Cheia de valoare minimă echo $max; // Imprimă rezultatul valorii maxime

În consecință, cheia pentru valoarea maximă este „4”, iar valoarea minimă este „6”.

Găsirea celei mai mari și mai mici valori a unui tablou multidimensional în PHP

Matricele multidimensionale se disting prin imbricarea lor. De exemplu, o matrice bidimensională ar arăta astfel fără cheile:

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

Și, în consecință, cu anumite chei:

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

În acest caz, găsirea valorilor maxime și minime este puțin dificilă, dar și posibilă.

Mai întâi, pentru a găsi aici maximul și minimul, transformăm matricea într-una unidimensională:

$out_array = matrice(); foreach($my_array as $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

Designul funcționează pentru ambele opțiuni de mai sus. Și apoi, urmând exemplul unei matrice unidimensionale, vom afișa datele de care avem nevoie:

Echo max($out_array); // Printează 74 echo min($out_array); // Imprimare 2

Ca un mic bonus, voi da un exemplu de altă matrice bidimensională populară:

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

Prin popularitate nu mă refer la conținut, ci la un exemplu al structurii acestuia. Să presupunem că aici trebuie să scoateți valorile maxime și minime ale cheilor „preț”.

Primul lucru de care aveți nevoie în acest caz este să obțineți o nouă matrice cu doar aceste date:

$numere = array_column($my_array, "preț");

Echo min($numere); // Imprimă 5 echo max($numere); // Tipăriți 50

Acest lucru completează munca cu matrice în PHP. Dacă dintr-o dată structura matricei dvs. este diferită și nu știți cum să o procesați, puneți întrebarea potrivită în comentarii, voi încerca să vă ajut.

Găsirea celei mai mari și mai mici valori a unui tablou unidimensional în JavaScript

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

Var my_array = ;

Nu sunt indicați indici aici. Pentru a găsi valorile maxime și minime în această matrice, vom scrie două funcții simple:

Funcția arrayMax(matrice) ( returnează matrice.reduce(funcție(a, b) ( returnează Math.max(a, b); )); ) funcția matriceMin(matrice) ( returnează matrice.reduce(funcție(a, b) ( returnează Math.min(a, b); )); )

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

Alert(arrayMax(my_array)); // Imprimă 74 alert(arrayMin(my_array)); // Imprimare 2

În acest caz, numerele „2” și „74” vor fi afișate pe ecran ca valori minime și maxime ale matricei.

Găsirea celei mai mari și mai mici valori a unui tablou multidimensional în JavaScript

Matricele multidimensionale în JavaScript sunt la fel de simple și arată astfel:

Var my_array = [ , , ];

Să încercăm să găsim aici maximul și minimul. Pentru început, vom scrie o funcție cu care, conform schemei cu care suntem deja familiarizați, vom reprezenta această matrice ca unidimensională:

Var out_array = ; my_array.forEach(funcție(v) ( Array.prototype.push.apply(out_array, v); ));

Și folosind obiectul " Matematică„obținem valorile de care avem nevoie:

Var min = Math.min.apply(null, out_array); // Obține 2 var max = Math.max.apply(null, out_array); // Obține 74 alerte(max); // Tipăriți 74 pe ecran

De fapt, în locul obiectului " Matematică„Puteți folosi funcțiile noastre utilizate în versiunea cu o matrice unidimensională, dar pentru a înțelege că orice problemă poate fi rezolvată în mai multe moduri - aici am dat o soluție puțin diferită.

Ei bine, conform tradiției – un mic bonus. Să luăm în considerare o altă matrice multidimensională cu următoarea structură:

Var my_array = [["One", "2018-03-19", 5], ["Two", "2018-03-19", 50], ["Trei", "2018-03-19", 25 ], ];

După cum putem vedea, valorile numerice din fiecare matrice sunt pe locul trei. Să scriem un cod și să obținem valorile corespunzătoare doar din aceste date:

Var min = +Infinit; var max = -Infinit; my_array.forEach(funcție(articol) ( dacă(+articol< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Se caută valoarea maximă ) )); alertă(min+" "+max); // Afișează rezultatul pe ecran

Asta e tot. Nu uitați să susțineți proiectul. O mulțime de lucruri interesante vă așteaptă înainte!

Am o matrice în acest format:

Array ( => Array ( => 117 => Networking => 16) => Array ( => 188 => FTP => 23) => Array ( => 189 => Internet => 48))

Există o modalitate bună de a obține valorile minime și maxime ale „numărului”? Aș putea face acest lucru folosind mai multe bucle, dar m-am gândit că ar putea exista o modalitate mai bună.

Spre deosebire de altele, nu puteți folosi funcțiile min() / max() pentru această problemă, deoarece aceste funcții nu înțeleg matricele de date (matrice) transmise acestora. Aceste funcții funcționează numai pentru elementele matrice scalare.

ÎNCEPE IMAGINEA

Motivul pentru care utilizarea min() și max() pare să dea răspunsul corect este că tablourile sunt transformate în numere întregi, ceea ce este un comportament nedefinit:

Comportamentul de conversie la număr întreg nu este definit pentru alte tipuri. Nu vă bazați pe niciun comportament observat, deoarece se poate schimba fără avertisment.

Declarația mea de mai sus despre tipar a fost greșită. De fapt, min() și max() funcționează cu matrice, dar nu în modul în care OP are nevoie de ele pentru a funcționa. Când utilizați min() și max() cu mai multe matrice sau o matrice de elemente de matrice, comparați elementele element cu element de la stânga la dreapta:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * primul element în comparație cu primul element: 2 == 2 * al doilea element în comparație cu al doilea element: 4< 5 * first array is considered the min and is returned */

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

TERMINARE EDITARE

Modul corect este să folosiți o buclă.

$a = array(array("id" => 117, "name" => "Rețea", "count" => 16), array("id" => 188, "name" => "FTP", " count" => 23), array("id" => 189, "name" => "Internet", "count" => 48)); $min = PHP_INT_MAX; $max = 0; foreach ($a ca $i) ( $min = min($min, $i["număr"]); $max = max($max, $i["număr"]); )

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

Ce ai făcut cu mai multe bucle? Unul este suficient :)

  1. Obțineți primul element numărând atât $min, cât și max
  2. repetați peste restul, comparați numărul cu fiecare $min și $max, dacă este mai mic/mai mare, atribuiți o nouă valoare de numărare

Puteți utiliza funcțiile max/min, deoarece acestea vor returna o matrice care conține maximul/minimul fiecărui index. Exemplul dvs. ar trebui să returneze matrice (189, „Rețea”, 48) pentru max. Apoi puteți lua scorul din această matrice.

Actualizarea nu funcționează așa cum am exclus. Exemplul paginii de manual este înșelător, iar exemplul oferă rezultatul corect folosind max, dar aceasta este doar o coincidență.

Se pare că nu puteți utiliza max() pe o matrice 2D. Acesta returnează doar cea mai mare matrice, mai degrabă decât max() a fiecărui index (după cum se precizează în mai multe răspunsuri).

$număr = matrice(); foreach($arr ca $_arr) ( $număr = $_arr["număr"]; ) var_dump(max($număr), min($număr));

Există un echivalent incorporat functia pentru asta? (chiar fără posibilitatea testarea)

/** * preia o coloană dintr-o matrice 2D cu o selecție opțională peste o altă coloană * * @param $ aArray de preluat de la * @param $ aColName numele coloanei de preluat, de ex. „O_NAME” * @param $aColTest (opțional) numele coloanei pentru a rula testul, de ex. „O_ID” * @param $aTest șir (opțional) pentru test de ex. ">=10", "== "". $Toto. "" " * @return matrice 1D cu numai coloana extrasă * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray ca $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ rând [ $ aColName]; ) ) returnează $ mRes; ) // extrageColFromArray