PHP Uzyskaj wartości minimalne i maksymalne w dwuwymiarowej tablicy asocjacyjnej. Min - Znajduje najmniejszą wartość Php liczby minimalnych wartości w tablicy

(PHP 4, PHP 5, PHP 7)

min — Znajduje najmniejszą wartość

Opis

Jeżeli zostanie przekazany tylko jeden argument – ​​tablica liczb, min() zwraca najmniejszy z nich. Jeśli pierwszy argument jest liczbą całkowitą lub zmiennoprzecinkową, musi być jeszcze co najmniej jeden argument. W tym przypadku funkcja min() zwróci najmniejszy z nich.

Komentarz:

Wartości różnych typów są porównywane przy użyciu standardowych reguł porównania. Na przykład ciąg nienumeryczny ( strunowy) zostanie porównane z liczbą całkowitą ( liczba całkowita) jakby było równe 0 , ale kilka linii ( strunowy) zostaną porównane alfabetycznie. Wartość zwracana zachowa oryginalny typ zmiennej, bez konwersji.

Zwróć wartości

Funkcjonować min() zwraca wartość parametru uważaną za „najmniejszą” zgodnie ze standardowymi regułami porównania. Jeśli kilka wartości różnych typów jest sobie równych (tj. 0 I "ABC"), wówczas zostanie zwrócony pierwszy.

Przykłady

Przykład nr 1 Przykład użycia min()

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

// Łańcuch „witaj” w porównaniu z int jest traktowany jako 0
// Ponieważ obie wartości są równe, o wyniku decyduje kolejność parametrów
echo min(0, „cześć”); // 0
echo min („cześć”, 0 ); // Witam

// Tutaj porównujemy -1< 0, поэтому -1 является наименьшим значением
echo min („cześć”, - 1 ); // -1

// Porównując tablice o różnych długościach, min zwróci krótszą
$val = min (tablica(2, 2, 2), tablica(1, 1, 1, 1)); // tablica (2, 2, 2)

// Wiele tablic o tej samej długości jest porównywanych od lewej do prawej
// w tym przykładzie: 2 == 2, ale 4< 5
$val = min (tablica(2, 4, 8), tablica(2, 5, 1)); // tablica (2, 4, 8)

// Jeśli porównana zostanie tablica z niebędącą tablicą, tablica nigdy nie zostanie zwrócona
// ponieważ tablice są uważane za większe niż wszystkie inne wartości
$val = min („string” , tablica (2 , 5 , 7 ), 42 ); //strunowy

// Jeśli jeden argument ma wartość NULL lub wartość logiczną, zostanie porównany z pozostałymi
// używając reguły FAŁSZ< TRUE, учитывая остальные типы аргументов
// W podanym przykładzie wartości -10 i 10 są traktowane jako PRAWDA
$val = min (- 10 , FALSE , 10 ); // FAŁSZ
$val = min (- 10 , NULL , 10 ); // ZERO

// z drugiej strony 0 jest traktowane jako FAŁSZ, więc jest „mniejsze” niż PRAWDA
$val = min(0, PRAWDA); // 0
?>

Tablice to jeden z wygodnych, uporządkowanych sposobów przechowywania informacji. Każdy element takiej tablicy ma swoje miejsce, własny klucz i wartość. Zawartość tablic może być różna, np. baza danych zawierająca liczby, nazwy lub proste wartości liczbowe. Mówiąc o liczbach, możemy stanąć przed różnego rodzaju zadaniami, na przykład wydedukowaniem wartości maksymalnej lub minimalnej. Dzisiaj porozmawiamy o tym, jak rozwiązano ten problem w różnych językach programowania.

Znajdowanie największej i najmniejszej wartości tablicy jednowymiarowej w PHP

Wszystkie tablice różnią się budową. Rozważmy dwie proste tablice jednowymiarowe, z których jedna nie zawiera kluczy:

$moja_tablica = tablica(22, 24, 37, 74, 23, 2, 10);

i jeden identyczny z poprzednim, ale z kluczami:

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

Spróbujmy wyświetlić wartości maksymalne i minimalne tej tablicy. W tym celu użyjemy standardowych funkcji” maks" I " min"odpowiednio:

Echo max($moja_tablica); // Wydrukuj 74 echo min($my_array); // Drukuj 2

Jeśli przyjrzymy się bliżej drugiej tablicy, w rezultacie możemy uzyskać klucz wartości maksymalnych lub minimalnych.

Na przykładzie tablicy

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

będzie to wyglądać tak:

$max = array_keys($moja_tablica, max($moja_tablica)); $max = $max;// Klucz wartości maksymalnej $min = array_keys($my_array, min($my_array)); $min = $min; // Klucz wartości minimalnej echo $max; // Wydrukuj wynik wartości maksymalnej

W związku z tym kluczem wartości maksymalnej jest „4”, a wartością minimalną jest „6”.

Znajdowanie największej i najmniejszej wartości tablicy wielowymiarowej w PHP

Tablice wielowymiarowe wyróżniają się zagnieżdżeniem. Na przykład tablica dwuwymiarowa wyglądałaby tak bez kluczy:

$moja_tablica = tablica(tablica(22, 24, 37), tablica(74, 23, 2), tablica(10));

I odpowiednio z niektórymi kluczami:

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

W tym przypadku znalezienie wartości maksymalnych i minimalnych jest trochę trudne, ale również możliwe.

Najpierw, aby znaleźć tutaj maksimum i minimum, przekształcamy tablicę na jednowymiarową:

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

Projekt działa dla obu powyższych opcji. A następnie, wzorując się na przykładzie tablicy jednowymiarowej, wyświetlimy potrzebne nam dane:

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

Jako mały bonus podam przykład innej popularnej tablicy dwuwymiarowej:

$my_array = array(array("id" => "1", "data" => "2018-03-19", "cena" => "5",), tablica ("id" => "2" , "data" => "19.03.2018", "cena" => "50", tablica ("id" => "3", "data" => "19.03.2018", " cena" => "25",));

Przez popularność nie mam na myśli treści, ale przykład jej struktury. Powiedzmy, że tutaj musisz wyprowadzić wartości maksymalne i minimalne tylko kluczy „cena”.

Pierwszą rzeczą, której potrzebujesz w tym przypadku, jest uzyskanie nowej tablicy zawierającej tylko te dane:

$liczby = kolumna_tablicy($moja_tablica, "cena");

Echo min($liczby); // Wydrukuj 5 echo max($numbers); // Drukuj 50

To kończy pracę z tablicami w PHP. Jeśli nagle struktura Twojej tablicy jest inna i nie wiesz jak ją przetworzyć, zadaj odpowiednie pytanie w komentarzach, postaram się Ci pomóc.

Znajdowanie największej i najmniejszej wartości tablicy jednowymiarowej w JavaScript

W przeciwieństwie do PHP, typ tablic w JavaScript jest znacznie prostszy, a prosta tablica jednowymiarowa będzie wyglądać następująco:

Var moja_tablica = ;

Nie podano tu żadnych indeksów. Aby znaleźć wartości maksymalne i minimalne w tej tablicy, napiszemy własne dwie proste funkcje:

Funkcja arrayMax(tablica) ( return array.reduce(funkcja(a, b) ( return Math.max(a, b); )); ) funkcja arrayMin(tablica) ( return array.reduce(funkcja(a, b) ( zwróć Math.min(a, b); )); )

które służą do znalezienia potrzebnych nam wartości. Użycie jest również proste:

Alert(tablicaMax(moja_tablica)); // Wydrukuj alert 74(tablicaMin(moja_tablica)); // Drukuj 2

W takim przypadku na ekranie zostaną wyświetlone liczby „2” i „74” jako minimalne i maksymalne wartości tablicy.

Znajdowanie największej i najmniejszej wartości tablicy wielowymiarowej w JavaScript

Tablice wielowymiarowe w JavaScript są równie proste i wyglądają tak:

Var moja_tablica = [ , , ];

Spróbujmy znaleźć tutaj maksimum i minimum. Na początek napiszemy funkcję, za pomocą której zgodnie ze znanym nam już schematem będziemy reprezentować tę tablicę jako jednowymiarową:

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

I użycie obiektu ” Matematyka„otrzymujemy potrzebne nam wartości:

Var min = Math.min.apply(null, out_array); // Uzyskaj 2 var max = Math.max.apply(null, out_array); // Uzyskaj alert 74 (maks.); // Wydrukuj 74 na ekranie

W rzeczywistości zamiast obiektu „ Matematyka„Można skorzystać z naszych funkcji zastosowanych w wersji z tablicą jednowymiarową, ale żebyście zrozumieli, że każdy problem można rozwiązać na kilka sposobów – tutaj podałem nieco inne rozwiązanie.

Cóż, zgodnie z tradycją – mały bonus. Rozważmy inną tablicę wielowymiarową o następującej strukturze:

Var my_array = [["Jeden", "2018-03-19", 5], ["Dwa", "2018-03-19", 50], ["Trzy", "2018-03-19", 25 ], ];

Jak widzimy, wartości liczbowe w każdej tablicy znajdują się na trzecim miejscu. Napiszmy trochę kodu i uzyskajmy odpowiednie wartości właśnie z tych danych:

Var min = +Nieskończoność; var max = -Nieskończoność; my_array.forEach(funkcja(element) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Szukam maksymalnej wartości ) )); alert(min+" "+maks); // Wyświetl wynik na ekranie

To wszystko. Nie zapomnij wesprzeć projektu. Przed Tobą mnóstwo ciekawych rzeczy!

Mam tablicę w tym formacie:

Tablica ( => Tablica ( => 117 => Sieć => 16) => Tablica ( => 188 => FTP => 23) => Tablica ( => 189 => Internet => 48))

Czy istnieje dobry sposób na uzyskanie minimalnych i maksymalnych wartości „count”? Mógłbym to zrobić za pomocą wielu pętli, ale pomyślałem, że może być lepszy sposób.

W przeciwieństwie do innych, w przypadku tego problemu nie można używać funkcji min() / max(), ponieważ te funkcje nie rozumieją przekazywanych im tablic danych (tablicy). Funkcje te działają tylko dla elementów tablicy skalarnej.

ROZPOCZNIJ OBRAZ

Powodem, dla którego użycie min() i max() wydaje się dawać poprawną odpowiedź, jest to, że tablice rzutują typy na liczby całkowite, co jest zachowaniem niezdefiniowanym:

Zachowanie konwersji na liczbę całkowitą nie jest zdefiniowane dla innych typów. Nie polegaj na zaobserwowanym zachowaniu, ponieważ może ono ulec zmianie bez ostrzeżenia.

Moje powyższe oświadczenie na temat rzutowania typów było błędne. Właściwie min() i max() działają z tablicami, ale nie w sposób, w jaki OP potrzebuje ich do działania. Używając min() i max() z wieloma tablicami lub tablicą elementów tablicy, porównuj elementy element po elemencie od lewej do prawej:

$val = min(tablica(2, 4, 8), tablica(2, 5, 1)); // array(2, 4, 8) /* * pierwszy element w porównaniu z pierwszym elementem: 2 == 2 * drugi element w porównaniu z drugim elementem: 4< 5 * first array is considered the min and is returned */

W tłumaczeniu na problem OP pokazuje, dlaczego bezpośrednie użycie min() i max() wydaje się dawać poprawny wynik. Pierwszymi elementami tablicy są id , więc min() i max() przy okazji porównują je najpierw, co prowadzi do poprawnego wyniku, ponieważ najniższy id to ten, który ma najmniejszą liczbę, a najwyższy id to ten który ma największą liczbę.

KONIEC EDYCJI

Poprawnym sposobem jest użycie pętli.

$a = array(array("id" => 117, "name" => "Sieć", "count" => 16), array("id" => 188, "name" => "FTP", " liczba" => 23), tablica("id" => 189, "nazwa" => "Internet", "liczba" => 48)); $min = PHP_INT_MAX; $maks. = 0; foreach ($a jako $i) ( $min = min($min, $i["liczba"]); $max = max($max, $i["liczba"]); )

Możesz użyć funkcji max() i min().

Co zrobiłeś z wieloma pętlami? Jeden wystarczy :)

  1. Zdobądź pierwszy element, licząc liczbę $min i max
  2. iteruj po pozostałej części, porównaj liczbę z każdym $min i $max, jeśli jest mniejsza/większa, przypisz nową wartość licznika

Możesz użyć funkcji max/min, ponieważ zwrócą one tablicę zawierającą maksimum/minimum każdego indeksu. Twój przykład powinien zwrócić tablicę (189, „Sieć”, 48) dla max. Następnie możesz pobrać wynik z tej tablicy.

Aktualizacja tego nie działa, jak wykluczyłem. Przykład strony podręcznika wprowadza w błąd i podaje poprawny wynik przy użyciu wartości max, ale to tylko zbieg okoliczności.

Wygląda na to, że nie można użyć funkcji max() w tablicy 2D. Po prostu zwraca największą tablicę, a nie max() każdego indeksu (jak stwierdzono w kilku odpowiedziach).

$liczba = tablica(); foreach($arr jako $_arr) ( $count = $_arr["count"]; ) var_dump(max($count), min($count));

Czy istnieje odpowiednik wbudowany do tego służyć? (nawet bez możliwości testowanie)

/** * pobiera kolumnę z tablicy 2D z opcjonalnym wyborem innej kolumny * * @param $ aArray do pobrania z * @param $ aColName nazwa kolumny do pobrania, np. "O_NAME" * @param $aColTest (opcjonalnie) nazwa kolumny, w której ma zostać uruchomiony test, np. "O_ID" * @param $aTest (opcjonalny) ciąg znaków dla testu, np. ">=10", "== "". $Toto. "" " * @return Tablica 1D z wyodrębnioną tylko kolumną * @access public * / funkcja ekstraktColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ row [ $ aColName]; ) ) return $ mRes; ) // ekstraktColFromArray