PHP Abrufen der minimalen und maximalen Werte in einem assoziativen 2D-Array

8

Ich habe ein Array in diesem Format:

%Vor%

Gibt es eine gute Möglichkeit, die minimalen und maximalen Werte von "count" abzurufen? Ich könnte das mit ein paar Schleifen machen, aber ich dachte, es könnte einen besseren Weg geben.

    
James B 28.08.2009, 06:19
quelle

7 Antworten

6

Im Gegensatz zu dem, was andere geschrieben haben, können Sie die min() / max() Funktionen für dieses Problem, da diese Funktionen die Datenstruktur (Array) nicht verstehen, die übergeben werden in. Diese Funktionen funktionieren nur für skalare Array-Elemente.

BEGIN EDIT

Der Grund warum die Verwendung von min() und max() scheint die richtige Antwort zu geben, die sich auf Typ-Casting-Arrays auf ganze Zahlen bezieht, was ein undefiniertes Verhalten :

  

Das Verhalten beim Konvertieren in Ganzzahl   ist für andere Typen nicht definiert. Unterlassen Sie   verlassen sich auf jedes beobachtete Verhalten, so wie es ist   kann sich ohne vorherige Ankündigung ändern.

Meine obige Aussage über das Typcasting war falsch. Eigentlich min() und max() funktioniert mit Arrays, aber nicht so, wie das OP sie benötigt. Bei Verwendung von min() und max() mit mehreren Arrays oder einem Array von Array-Elementen werden Element für Element von links nach rechts verglichen:

%Vor%

Übersetzt in das OP-Problem zeigt dies den Grund, warum die direkte Verwendung von min() und max() scheint das richtige Ergebnis zu liefern. Die ersten Elemente der Arrays sind die id -Werte, also min() und max() vergleicht sie zuerst, was im Ergebnis zu dem korrekten Ergebnis führt, weil der niedrigste id der ist eine mit der niedrigsten count und die höchste id ist die mit der höchsten count .

ENDE BEARBEITEN

Der richtige Weg wäre die Verwendung einer Schleife.

%Vor%     
Stefan Gehrig 28.08.2009, 07:24
quelle
0

Sie könnten die max () und min () Funktionen.

    
Mr. Smith 28.08.2009 06:21
quelle
0

Was hast du mit ein paar Loops gemacht? Eins ist genug genug :)

  1. Holen Sie sich das erste Element, indem Sie die Anzahl sowohl auf $ min als auch auf $ max
  2. setzen
  3. iteriere über den Rest, vergleiche die Anzahl mit jedem $ min und $ max, wenn kleiner / größer, weise den neuen Zählwert zu
Anti Veeranna 28.08.2009 06:27
quelle
0

Sie können die Funktionen max / min verwenden, da sie ein Array mit dem Maximum / Minimum jedes Indexes zurückgeben. Ihr Beispiel sollte array(189, 'Networking ', 48) für max zurückgeben. Sie könnten dann die Anzahl von diesem Array greifen.

Update funktioniert nicht so wie ich es gemacht habe. Das Beispiel der Handbuchseite ist irreführend und das Beispiel über gibt das richtige Ergebnis mit max, aber das ist nur ein Zufall.

    
MitMaro 28.08.2009 06:26
quelle
0

Sieht so aus, als könnten Sie max () nicht für ein 2D-Array verwenden. Es gibt nur das größte Array zurück, nicht das Maximum () jedes Index (wie in einigen Antworten erwähnt).

Also:

%Vor%     
bucabay 28.08.2009 10:15
quelle
0

Gibt es eine entsprechende Funktion? (auch ohne die test -Fähigkeit)

%Vor%     
Alex 07.10.2009 08:17
quelle
0

Wenn die gewünschte Spalte zuerst im Array ist, können Sie die folgenden Einzeiler verwenden:

%Vor%

Dies wird das Minimum / Maximum von id

finden     
AquilaX 16.02.2011 18:50
quelle

Tags und Links