Php vindt het maximale element in een array. PHP Krijg min- en max-waarden in 2D associatieve array

Ik heb een array in dit formaat:

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

Is er een goede manier om de min- en max-waarden van "count" te krijgen? Ik zou dit kunnen doen met meerdere lussen, maar ik dacht dat er misschien een betere manier was.

In tegenstelling tot anderen kunt u voor dit probleem de functies min() / max() niet gebruiken, omdat deze functies de gegevensarrays (array) die aan hen worden doorgegeven niet begrijpen. Deze functies werken alleen voor scalaire array-elementen.

START AFBEELDING

De reden waarom het gebruik van min() en max() het juiste antwoord lijkt te geven, is omdat arrays type-casting zijn naar gehele getallen, wat ongedefinieerd gedrag is:

Het conversiegedrag naar geheel getal is voor andere typen niet gedefinieerd. Vertrouw niet op waargenomen gedrag, aangezien dit zonder waarschuwing kan veranderen.

Mijn bovenstaande verklaring over type-casting was verkeerd. Eigenlijk werken min() en max() met arrays, maar niet op de manier waarop het OP ze nodig heeft om te werken. Wanneer u min() en max() gebruikt met meerdere arrays of een array met array-elementen, vergelijkt u de elementen element voor element van links naar rechts:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * eerste element vergeleken met eerste element: 2 == 2 * tweede element vergeleken met tweede element: 4< 5 * first array is considered the min and is returned */

Vertaald naar het probleem laat het OP zien waarom het direct gebruiken van min() en max() het juiste resultaat lijkt te geven. De eerste elementen van de array zijn id , dus min() en max() vergelijken ze trouwens eerst, wat tot het juiste resultaat leidt, omdat de laagste id degene is met het laagste aantal en de hoogste id degene is die het hoogste aantal heeft.

EINDE BEWERKING

De juiste manier is om een ​​lus te gebruiken.

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

U kunt de functies max() en min() gebruiken.

Wat heb je gedaan met meerdere lussen? Een is genoeg :)

  1. Haal het eerste element op door het aantal $min en max te tellen
  2. herhaal de rest, vergelijk de telling met elke $min en $max, indien kleiner/groter, wijs een nieuwe telwaarde toe

U kunt de max/min-functies gebruiken, omdat deze een array retourneren met het maximum/minimum van elke index. Uw voorbeeld zou array(189, "Networking", 48) moeten retourneren voor max . U kunt vervolgens de score uit deze array halen.

Dit updaten werkt niet zoals ik heb uitgesloten. Het voorbeeld van de manpagina is misleidend en het voorbeeld geeft het juiste resultaat met max, maar dat is louter toeval.

Het lijkt erop dat je max() niet kunt gebruiken in een 2D-array. Het retourneert alleen de grootste array, in plaats van max() van elke index (zoals vermeld in verschillende antwoorden).

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

Is er een equivalent? ingebouwd functie hiervoor? (zelfs zonder de mogelijkheid testen)

/** * haalt een kolom op uit een 2D-array met een optionele selectie over een andere kolom * * @param $ aArray om op te halen uit * @param $ aColName naam van de kolom die moet worden opgehaald, bijv. "O_NAME" * @param $aColTest (optioneel) kolomnaam om de test uit te voeren, b.v. "O_ID" * @param $aTest (optioneel) tekenreeks voor testex. ">=10", "== "". $Toto. "" " * @return 1D-array met alleen de kolom geëxtraheerd * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ rij [ $ aColName]; ) ) return $ mRes; ) // extractColFromArray

Arrays zijn een van de handige gestructureerde manieren om informatie op te slaan. Elk element van zo’n array heeft zijn eigen plaats, zijn eigen sleutel en waarde. De inhoud van arrays kan verschillend zijn, zoals bijvoorbeeld een database met getallen, namen of eenvoudige numerieke waarden. Over getallen gesproken: we kunnen met verschillende soorten taken te maken krijgen, bijvoorbeeld het afleiden van de maximale of minimale waarde. Vandaag zullen we het hebben over hoe dit in verschillende programmeertalen wordt opgelost.

Het vinden van de grootste en kleinste waarde van een eendimensionale array in PHP

Alle arrays verschillen in hun structuur. Beschouw twee eenvoudige eendimensionale arrays, waarvan er één geen sleutels bevat:

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

en één identiek aan de vorige, maar met sleutels:

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

Laten we proberen de maximale en minimale waarden van deze array weer te geven. Om dit te doen zullen we standaardfuncties gebruiken " maximaal" En " min"respectievelijk:

Echomax($my_array); // Print 74 echo min($my_array); // Afdrukken 2

Als we de tweede array nader bekijken, kunnen we als resultaat de sleutel van de maximale of minimale waarden verkrijgen.

Gebruik een array als voorbeeld

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

het zal er zo uitzien:

$max = array_keys($mijn_array, max($mijn_array)); $max = $max;// Maximale waardesleutel $min = array_keys($my_array, min($my_array)); $min = $min; // Minimale waarde sleutel echo $max; // Druk het resultaat van de maximale waarde af

Dienovereenkomstig is de maximale waardesleutel “4” en de minimumwaarde “6”.

Het vinden van de grootste en kleinste waarde van een multidimensionale array in PHP

Multidimensionale arrays onderscheiden zich door hun nesting. Een tweedimensionale array zou er bijvoorbeeld zo uitzien zonder de sleutels:

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

En dienovereenkomstig met bepaalde sleutels:

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

In dit geval is het vinden van de maximale en minimale waarden een beetje moeilijk, maar ook mogelijk.

Om hier het maximum en minimum te vinden, transformeren we eerst de array in een eendimensionale array:

$out_array = array(); foreach($mijn_array als $sub_array) ( $out_array = array_merge($out_array, $sub_array); )

Het ontwerp werkt voor beide bovenstaande opties. En dan zullen we, volgens het voorbeeld van een eendimensionale array, de gegevens weergeven die we nodig hebben:

Echomax($out_array); // Print 74 echo min($out_array); // Afdrukken 2

Als kleine bonus geef ik een voorbeeld van een andere populaire tweedimensionale array:

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

Met populariteit bedoel ik niet de inhoud, maar een voorbeeld van de structuur ervan. Laten we zeggen dat u hier de maximale en minimale waarden van alleen de 'prijs'-sleutels moet uitvoeren.

Het eerste dat u in dit geval nodig heeft, is een nieuwe array krijgen met alleen deze gegevens:

$numbers = array_column($mijn_array, "prijs");

Echomin($getallen); // Print 5 echo max($numbers); // Afdrukken 50

Hiermee is het werk met arrays in PHP voltooid. Als de structuur van uw array plotseling anders is en u niet weet hoe u deze moet verwerken, stel dan de juiste vraag in de opmerkingen, ik zal proberen u te helpen.

Het vinden van de grootste en kleinste waarde van een eendimensionale array in JavaScript

In tegenstelling tot PHP is het type arrays in JavaScript veel eenvoudiger, en een eenvoudige eendimensionale array ziet er als volgt uit:

Var mijn_array = ;

Er zijn hier geen indexen aangegeven. Om de maximale en minimale waarden in deze array te vinden, zullen we twee eenvoudige eigen functies schrijven:

Functie arrayMax(array) ( retourneer array.reduce(functie(a, b) ( retourneer Math.max(a, b); )); ) function arrayMin(array) ( retourneer array.reduce(functie(a, b) ( retourneer Math.min(a, b); )); )

die worden gebruikt om de waarden te vinden die we nodig hebben. Het gebruik is ook eenvoudig:

Alert(arrayMax(mijn_array)); // Print 74 alert(arrayMin(mijn_array)); // Afdrukken 2

In dit geval worden de cijfers “2” en “74” op het scherm weergegeven als de minimum- en maximumwaarden van de array.

Het vinden van de grootste en kleinste waarde van een multidimensionale array in JavaScript

Multidimensionale arrays in JavaScript zijn net zo eenvoudig en zien er als volgt uit:

Var mijn_array = [ , , ];

Laten we proberen hier het maximum en het minimum te vinden. Om te beginnen zullen we een functie schrijven waarmee we, volgens het schema dat we al kennen, deze array als eendimensionaal zullen weergeven:

Var out_array = ; mijn_array.forEach(functie(v) ( Array.prototype.push.apply(out_array, v); ));

En het object gebruiken " Wiskunde"we krijgen de waarden die we nodig hebben:

Var min = Math.min.apply(null, out_array); // Haal 2 var max = Math.max.apply(null, out_array); // Ontvang 74 waarschuwingen (max); // Print 74 op het scherm

In feite, in plaats van het object " Wiskunde“Je kunt onze functies gebruiken die worden gebruikt in de versie met een eendimensionale array, maar zodat je begrijpt dat elk probleem op verschillende manieren kan worden opgelost - hier heb ik een iets andere oplossing gegeven.

Nou ja, volgens traditie – een kleine bonus. Laten we een andere multidimensionale array bekijken met de volgende structuur:

Var my_array = [["Eén", "19-03-2018", 5], ["Twee", "19-03-2018", 50], ["Drie", "19-03-2018", 25 ], ];

Zoals we kunnen zien, staan ​​de numerieke waarden in elke array op de derde plaats. Laten we wat code schrijven en de bijbehorende waarden uit alleen deze gegevens halen:

Varmin = +Oneindig; var max = -Oneindigheid; my_array.forEach(function(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Op zoek naar de maximale waarde ) )); waarschuwing(min+" "+max); // Geef het resultaat weer op het scherm

Dat is alles. Vergeet niet het project te steunen. Er staan ​​je veel interessante dingen te wachten!

(PHP4, PHP5, PHP7)

min — Vindt de kleinste waarde

Beschrijving

Als er slechts één argument wordt doorgegeven: een reeks getallen, min() geeft de kleinste terug. Als het eerste argument een geheel getal of een float is, moeten er nog minstens één zijn. In dit geval de functie min() zal de kleinste teruggeven.

Opmerking:

Waarden van verschillende typen worden vergeleken met behulp van standaard vergelijkingsregels. Een niet-numerieke tekenreeks ( snaar ) wordt vergeleken met een geheel getal ( geheel getal ) alsof het gelijk was 0 , maar meerdere regels ( snaar ) worden alfabetisch vergeleken. De geretourneerde waarde behoudt het oorspronkelijke type van de variabele, zonder conversie.

Waarden retourneren

Functie min() retourneert de waarde van de parameter die volgens standaardvergelijkingsregels als de "kleinste" wordt beschouwd. Als meerdere waarden van verschillende typen gelijk zijn aan elkaar (bijv. 0 En "abc"), dan wordt de eerste geretourneerd.

Voorbeelden

Voorbeeld #1 Gebruiksvoorbeeld min()

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

// De string "hallo", vergeleken met int, wordt behandeld als 0
// Omdat beide waarden gelijk zijn, bepaalt de volgorde van de parameters het resultaat
echo min(0, "hallo"); // 0
echo min ("hallo" , 0 ); // Hallo

// Hier vergelijken we -1< 0, поэтому -1 является наименьшим значением
echo min ("hallo" , - 1 ); // -1

// Bij het vergelijken van arrays van verschillende lengtes zal min de kortere retourneren
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // array(2, 2, 2)

// Meerdere arrays van dezelfde lengte worden van links naar rechts vergeleken
// voor dit voorbeeld: 2 == 2, maar 4< 5
$val = min (array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)

// Als een array en een niet-array worden vergeleken, wordt de array nooit geretourneerd
// omdat arrays als groter worden beschouwd dan alle andere waarden
$val = min ("string" , array(2 , 5 , 7 ), 42 ); //snaar

// Als één argument NULL of booleaans is, wordt het met de andere vergeleken
// met behulp van de FALSE-regel< TRUE, учитывая остальные типы аргументов
// In het gegeven voorbeeld worden -10 en 10 behandeld als TRUE
$val = min (- 10, ONWAAR, 10); // ONWAAR
$val = min (- 10, NULL, 10); // NUL

// aan de andere kant wordt 0 behandeld als ONWAAR, dus het is "minder" dan WAAR
$val = min(0, WAAR); // 0
?>