2016-05-23 14 views
1

Ich versuche, von dieser AbfrageWie kann ich 4 maximalen Wert aus einem Array erhalten

SELECT state, COUNT(*) c FROM user_track WHERE day BETWEEN '16' and '24' AND 
viewed='aniket27' GROUP BY state HAVING c > 0; 

einige Staaten und ihren Wert aus der Datenbank zu holen, die mir ein Ergebnis wie this->

this is how query look likes gibt

dann unter Verwendung while-Schleife i Array alle Daten in hinzufügen

$ar = array(); 
while($fetch = mysqli_fetch_array($query)){ 
$ar[] = $fetch; } 

diese ist, wie Array nach dem Drucken aussieht.

this is how array looks

Jetzt möchte ich in einem neuen Array mit maximaler Zählwert vier Zustände erhalten und Zustand und ihre Werte in ein anderes Array ruhen, wie ich dies erreichen können?

hier ist das, was ich versucht habe

function maxN(array $numbers, $n) 
{ 
    $maxHeap = new SplMaxHeap; 
    foreach($numbers as $number) { 
     $maxHeap->insert($number); 
    } 
    return iterator_to_array(
     new LimitIterator($maxHeap, 0, $n) 
    ); 
} 
print_r(maxN($a, 4)); 

Eine weitere Sache, warum meine Array wie Multi Dimension aussehen?

+0

Postleitzahl, keine Bilder. –

+0

Es ist schwer zu verstehen, was Sie hier sind – Dale

+0

@Dale ich möchte 4 maximalen Wert aus dem Array –

Antwort

2

Sie könnten Ihr Array

usort($ar, function($a, $b){ 
    return strnatcmp($a['c'], $b['c']); 
}); 

sortieren und dann in Scheiben schneiden

$ar2 = array_slice($ar, 0, 4); 

Alternativ können Sie Ihre SQL

SELECT state, COUNT(*) c FROM user_track 
WHERE day BETWEEN '16' and '24' 
AND viewed = 'aniket27' 
GROUP BY state HAVING c > 0 
ORDER BY c DESC 

und Ihre Daten in der richtigen Reihenfolge aus kommen verändern

Verwandte Themen