PHP Ruft die Minimal- und Maximalwerte in einem zweidimensionalen assoziativen Array ab. Min – Ermittelt den kleinsten PHP-Wert der Anzahl der Mindestwerte im Array

(PHP 4, PHP 5, PHP 7)

Mindest - Findet den kleinsten Wert

Beschreibung

Wenn nur ein Argument übergeben wird – ein Array aus Zahlen, Mindest() gibt den kleinsten von ihnen zurück. Wenn das erste Argument eine Ganzzahl oder eine Gleitkommazahl ist, muss es mindestens ein weiteres geben. In diesem Fall die Funktion Mindest() wird den kleinsten von ihnen zurückgeben.

Kommentar:

Werte unterschiedlichen Typs werden mithilfe von Standardvergleichsregeln verglichen. Beispielsweise eine nicht numerische Zeichenfolge ( Zeichenfolge) wird mit einer Ganzzahl ( ganze Zahl), als ob es gleich wäre 0 , aber mehrere Zeilen ( Zeichenfolge) werden alphabetisch verglichen. Der Rückgabewert behält den ursprünglichen Typ der Variablen ohne Konvertierung bei.

Rückgabewerte

Funktion Mindest() gibt den Wert des Parameters zurück, der gemäß den Standardvergleichsregeln als der „kleinste“ gilt. Wenn mehrere Werte unterschiedlichen Typs einander gleich sind (d. h. 0 Und "ABC"), dann wird der erste zurückgegeben.

Beispiele

Beispiel Nr. 1 Anwendungsbeispiel Mindest()

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

// Die Zeichenfolge „hello“ wird beim Vergleich mit int als 0 behandelt
// Da beide Werte gleich sind, bestimmt die Reihenfolge der Parameter das Ergebnis
echo min(0, "Hallo"); // 0
echo min ("Hallo" , 0 ); // Hallo

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

// Beim Vergleich von Arrays unterschiedlicher Länge gibt min das kürzere zurück
$val = min (array(2 , 2 , 2 ), array(1 , 1 , 1 , 1 )); // Array(2, 2, 2)

// Mehrere Arrays gleicher Länge werden von links nach rechts verglichen
// für dieses Beispiel: 2 == 2, aber 4< 5
$val = min (array(2 , 4 , 8 ), array(2 , 5 , 1 )); // Array(2, 4, 8)

// Wenn ein Array und ein Nicht-Array verglichen werden, wird das Array nie zurückgegeben
// da Arrays als größer betrachtet werden als alle anderen Werte
$val = min ("string" , array(2 , 5 , 7 ), 42 ); //string

// Wenn ein Argument NULL oder boolesch ist, wird es mit den anderen verglichen
// unter Verwendung der FALSE-Regel< TRUE, учитывая остальные типы аргументов
// Im angegebenen Beispiel werden -10 und 10 als TRUE behandelt
$val = min (- 10, FALSE, 10); // FALSCH
$val = min (- 10, NULL, 10); // NULL

// Andererseits wird 0 als FALSCH behandelt, ist also „kleiner“ als WAHR
$val = min(0, TRUE); // 0
?>

Arrays sind eine der bequemen strukturierten Möglichkeiten zum Speichern von Informationen. Jedes Element eines solchen Arrays hat seinen eigenen Platz, seinen eigenen Schlüssel und Wert. Der Inhalt von Arrays kann unterschiedlich sein, beispielsweise eine Datenbank mit Zahlen, Namen oder einfachen numerischen Werten. Apropos Zahlen: Wir stehen möglicherweise vor verschiedenen Aufgaben, beispielsweise der Ableitung des Maximal- oder Minimalwerts. Heute werden wir darüber sprechen, wie dies in verschiedenen Programmiersprachen gelöst wird.

Ermitteln des größten und kleinsten Werts eines eindimensionalen Arrays in PHP

Alle Arrays unterscheiden sich in ihrer Struktur. Betrachten Sie zwei einfache eindimensionale Arrays, von denen eines keine Schlüssel enthält:

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

und eine identisch mit der vorherigen, aber mit Schlüsseln:

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

Versuchen wir, die Maximal- und Minimalwerte dieses Arrays anzuzeigen. Dazu verwenden wir Standardfunktionen. max" Und " Mindest" jeweils:

Echo max($my_array); // 74 drucken echo min($my_array); // Drucken 2

Wenn wir uns das zweite Array genauer ansehen, können wir als Ergebnis den Schlüssel der maximalen bzw. minimalen Werte erhalten.

Am Beispiel eines Arrays

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

es wird so aussehen:

$max = array_keys($my_array, max($my_array)); $max = $max;// Maximalwertschlüssel $min = array_keys($my_array, min($my_array)); $min = $min; // Minimalwert key echo $max; // Das Ergebnis des Maximalwerts ausgeben

Dementsprechend ist der Maximalwertschlüssel „4“ und der Minimalwert „6“.

Ermitteln des größten und kleinsten Werts eines mehrdimensionalen Arrays in PHP

Mehrdimensionale Arrays zeichnen sich durch ihre Verschachtelung aus. Ein zweidimensionales Array würde beispielsweise ohne die Schlüssel so aussehen:

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

Und dementsprechend mit bestimmten Schlüsseln:

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

In diesem Fall ist es etwas schwierig, aber auch möglich, die Maximal- und Minimalwerte zu finden.

Um hier das Maximum und Minimum zu finden, transformieren wir zunächst das Array in ein eindimensionales:

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

Das Design funktioniert für beide oben genannten Optionen. Und dann zeigen wir am Beispiel eines eindimensionalen Arrays die benötigten Daten an:

Echo max($out_array); // 74 drucken echo min($out_array); // Drucken 2

Als kleinen Bonus gebe ich ein Beispiel für ein weiteres beliebtes zweidimensionales Array:

$my_array = array(array("id" => "1", "date" => "19.03.2018", "price" => "5",), array ("id" => "2" , „Datum“ => „19.03.2018“, „Preis“ => „50“,), Array („ID“ => „3“, „Datum“ => „19.03.2018“, „ Preis" => "25",));

Mit Popularität meine ich nicht den Inhalt, sondern ein Beispiel für dessen Struktur. Nehmen wir an, Sie müssen hier nur die Maximal- und Minimalwerte der „Preis“-Tasten ausgeben.

Das erste, was Sie in diesem Fall benötigen, ist, ein neues Array nur mit diesen Daten zu erhalten:

$numbers = array_column($my_array, "price");

Echo min($numbers); // 5 ausgeben echo max($numbers); // 50 drucken

Damit ist die Arbeit mit Arrays in PHP abgeschlossen. Wenn die Struktur Ihres Arrays plötzlich anders ist und Sie nicht wissen, wie Sie es verarbeiten sollen, stellen Sie die entsprechende Frage in den Kommentaren. Ich werde versuchen, Ihnen zu helfen.

Ermitteln des größten und kleinsten Werts eines eindimensionalen Arrays in JavaScript

Im Gegensatz zu PHP ist der Array-Typ in JavaScript viel einfacher und ein einfaches eindimensionales Array sieht so aus:

Var my_array = ;

Hier werden keine Indizes angegeben. Um die Maximal- und Minimalwerte in diesem Array zu finden, schreiben wir selbst zwei einfache Funktionen:

Funktion arrayMax(array) ( return array.reduce(function(a, b) ( return Math.max(a, b); )); ) function arrayMin(array) ( return array.reduce(function(a, b) ( return Math.min(a, b); )); )

die verwendet werden, um die Werte zu finden, die wir brauchen. Auch die Verwendung ist einfach:

Alert(arrayMax(my_array)); // Print 74 warning(arrayMin(my_array)); // Drucken 2

In diesem Fall werden die Zahlen „2“ und „74“ als Minimal- und Maximalwerte des Arrays auf dem Bildschirm angezeigt.

Ermitteln des größten und kleinsten Werts eines mehrdimensionalen Arrays in JavaScript

Mehrdimensionale Arrays in JavaScript sind genauso einfach und sehen so aus:

Var my_array = [ , , ];

Versuchen wir hier das Maximum und das Minimum zu finden. Zunächst schreiben wir eine Funktion, mit der wir nach dem uns bereits bekannten Schema dieses Array eindimensional darstellen:

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

Und mit dem Objekt „ Mathematik„Wir bekommen die Werte, die wir brauchen:

Var min = Math.min.apply(null, out_array); // Holen Sie sich 2 var max = Math.max.apply(null, out_array); // 74-Alarm erhalten (max); // 74 auf dem Bildschirm ausgeben

Tatsächlich anstelle des Objekts „ Mathematik„Sie können unsere in der Version mit einem eindimensionalen Array verwendeten Funktionen verwenden, aber damit Sie verstehen, dass jedes Problem auf verschiedene Arten gelöst werden kann – hier habe ich eine etwas andere Lösung angegeben.

Nun ja, der Tradition entsprechend – ein kleiner Bonus. Betrachten wir ein weiteres mehrdimensionales Array mit der folgenden Struktur:

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

Wie wir sehen können, stehen die numerischen Werte in jedem Array an dritter Stelle. Schreiben wir etwas Code und erhalten die entsprechenden Werte aus diesen Daten:

Var min = +Unendlich; var max = -Infinity; my_array.forEach(function(item) ( if(+item< min) { min =+ item; // Ищем минимальное значение } }); my_array.forEach(function(item) { if(+item >max) ( max =+ item; // Suche nach dem Maximalwert ) )); alarm(min+" "+max); // Das Ergebnis auf dem Bildschirm anzeigen

Das ist alles. Vergessen Sie nicht, das Projekt zu unterstützen. Es erwarten Sie viele interessante Dinge!

Ich habe ein Array in diesem Format:

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

Gibt es eine gute Möglichkeit, die Min- und Max-Werte von „count“ zu ermitteln? Ich könnte dies mit mehreren Schleifen tun, aber ich dachte, es gäbe vielleicht einen besseren Weg.

Im Gegensatz zu anderen können Sie die Funktionen min() / max() für dieses Problem nicht verwenden, da diese Funktionen die an sie übergebenen Datenarrays (Array) nicht verstehen. Diese Funktionen funktionieren nur für skalare Array-Elemente.

STARTBILD

Der Grund, warum die Verwendung von min() und max() die richtige Antwort zu geben scheint, liegt darin, dass Arrays eine Typumwandlung in Ganzzahlen durchführen, was ein undefiniertes Verhalten ist:

Das Konvertierungsverhalten in Integer ist für andere Typen nicht definiert. Verlassen Sie sich nicht auf beobachtetes Verhalten, da sich dieses ohne Vorwarnung ändern kann.

Meine obige Aussage zur Typisierung war falsch. Eigentlich funktionieren min() und max() mit Arrays, aber nicht so, wie das OP sie zum Funktionieren benötigt. Wenn Sie min() und max() mit mehreren Arrays oder einem Array aus Array-Elementen verwenden, vergleichen Sie die Elemente Element für Element von links nach rechts:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) /* * erstes Element im Vergleich zum ersten Element: 2 == 2 * zweites Element im Vergleich zum zweiten Element: 4< 5 * first array is considered the min and is returned */

Übersetzt in das Problem zeigt das OP, warum die direkte Verwendung von min() und max() das richtige Ergebnis zu liefern scheint. Die ersten Elemente des Arrays sind id , daher vergleichen min() und max() sie übrigens zuerst, was zum korrekten Ergebnis führt, da die niedrigste ID diejenige mit der niedrigsten Anzahl ist und die höchste ID die Eins ist das hat die höchste Anzahl.

ENDE BEARBEITUNG

Der richtige Weg ist die Verwendung einer Schleife.

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

Sie können die Funktionen max() und min() verwenden.

Was hast du mit mehreren Schleifen gemacht? Eins reicht :)

  1. Erhalten Sie das erste Element, indem Sie die Anzahl von $min und max zählen
  2. iteriere über den Rest, vergleiche die Anzahl mit jedem $min und $max, wenn kleiner/größer, einen neuen Zählwert zuweisen

Sie können die Max/Min-Funktionen verwenden, da diese ein Array zurückgeben, das das Maximum/Minimum jedes Index enthält. Ihr Beispiel sollte array(189, "Networking", 48) für max zurückgeben. Sie können dann die Punktzahl aus diesem Array abrufen.

Das Aktualisieren funktioniert nicht, wie ich ausgeschlossen habe. Das Manpage-Beispiel ist irreführend und das Beispiel liefert bei Verwendung von max das richtige Ergebnis, aber das ist nur ein Zufall.

Es sieht so aus, als ob Sie max() nicht für ein 2D-Array verwenden können. Es gibt lediglich das größte Array zurück und nicht max() jedes Indexes (wie in mehreren Antworten angegeben).

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

Gibt es ein Äquivalent? eingebaut Funktion dafür? (auch ohne die Möglichkeit testen)

/** * ruft eine Spalte aus einem 2D-Array mit einer optionalen Auswahl über einer anderen Spalte ab * * @param $ aArray zum Abrufen von * @param $ aColName Name der abzurufenden Spalte, z. B. „O_NAME“ * @param $aColTest (optional) Spaltenname zum Ausführen des Tests, z. B. „O_ID“ * @param $aTest (optional) Zeichenfolge für Testbeispiel. ">=10", "== "". $Toto. "" " * @return 1D-Array mit nur der extrahierten Spalte * @access public * / function extractColFromArray ($aArray, $aColName, $aColTest = "", $ aTest = "") ( $mRes = array()); foreach ($aArray as $row) ( if (($aColTest == "") || (eval("return". $row[$aColTest]. $ aTest. ";"))) ( $ mRes = $ row [ $ aColName]; ) ) return $ mRes; ) // extractColFromArray