PHP Abrufen von minimum-und maximum-Werte in ein 2D assoziatives array
Ich habe ein array im folgenden format ein:
Array
(
[0] => Array
(
[id] => 117
[name] => Networking
[count] => 16
)
[1] => Array
(
[id] => 188
[name] => FTP
[count] => 23
)
[2] => Array
(
[id] => 189
[name] => Internet
[count] => 48
)
)
Ist es eine gute Möglichkeit zum abrufen von minimum-und maximum-Werte von 'count'? Ich könnte dies tun, mit ein paar loops, aber ich dachte es gibt einen besseren Weg.
- +1 ich lief in dieses problem, und heute habe ich nur eine Schleife. Neugierig auf das, was andere Methoden es gibt.
- Wenn es eine Funktion, die dies tun, wird es umgesetzt, mit Schlaufen, also was ist so schlecht über Ihre eigenen Funktionen?!
- Angelov: Für PHP-Funktionen, die Schleifen werden in C geschrieben, nicht in PHP, so sind Sie in der Regel schneller.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Gegensatz zu dem, was andere geschrieben haben, können Sie die
min()
/max()
Funktionen für dieses problem, da diese Funktionen nicht verstehen, die datastructure (array), die übergeben werden.Diese Funktionen arbeiten nur für die Skalare array-Elemente.BEGINNEN BEARBEITEN
Der Grund, warum die Verwendung vonmin()
undmax()
scheinen, ergeben die richtige Antwort ist im Zusammenhang mit Typ-casting-arrays, integers, die eine Undefiniertes Verhalten:Meine Aussage oben über die type-casting war falsch. Eigentlich
min()
undmax()
arbeiten mit arrays, aber nicht in der Art und Weise der OP braucht Sie, um zu arbeiten. Bei der Verwendung vonmin()
undmax()
mit mehreren arrays oder ein array von arrays-Elemente sind im Vergleich mit den Elementen von Links nach rechts:Übersetzt in die OP ' s problem zeigt dies der Grund, warum die direkte Nutzung von
min()
undmax()
scheint zu ergeben das richtige Ergebnis. Die arrays ersten Elemente sind dieid
-Werte, dahermin()
undmax()
vergleicht diese erste, übrigens was in das richtige Ergebnis, weil die niedrigsteid
ist der mit der niedrigstencount
und die höchsteid
ist derjenige mit der höchstencount
.ENDE BEARBEITEN
Der korrekte Weg wäre die Verwendung einer Schleife.
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
. Lesen.min
undmax
behandelt arrays korrekt und nicht gegossen Ihnen zu zahlen, das manual gibt weitere Details.Könnten Sie die max() und min() Funktionen.
Was hast du mit ein paar loops? Einer ist genug 🙂
Können Sie die
max
/min
Funktionen, wie Sie ein array zurückgeben, mit dem maximum/minimum eines jeden index. Ihr Beispiel sollte zurückarray(189, 'Networking
für', 48)
max
. Sie können dann greifen die Zählung aus, dass array.Update das nicht funktioniert-so hatte ich mir vorbehalten. Die manual-Seite-Beispiel ist irreführend, und das Beispiel, über das gibt das richtige Ergebnis mit max, aber das ist nur ein Zufall.
max($array)['count']
undmin($array)['count']
$temp = max($array); print($temp['count']);
obwohl.Sieht aus wie Sie nicht verwenden können, max() auf ein 2D-array. Es gibt einfach zurück, die größte Menge, nicht die max() von jeder index (wie erwähnt in ein paar Antworten).
Also:
Gibt es ein äquivalent build-in Funktion, dass man?
(auch ohne die test Fähigkeit)
Wenn die gewünschte Spalte wird zunächst in das array können Sie den folgenden Einzeiler:
So finden Sie die min/max id