Arrays sortieren PhP

T

tx_g

Gast
Hallo,
Ich habe ein kleines Problem. Ich werte Daten aus meiner Datenbank aus um zu testen welcher Datensatz der richtige ist.

Hier bei wird für jedes "trifft zu" dir ID des Datensatzes in ein Array gespeichert.
Das Ergebnis kann z.bsp so aussehen:
(1,1,1,2,2,3,3,3,4,5,5,5,5,) oder in beliebiger Reihenfolge.
Nun möchte ich herrausfinden welcher der Werte in dem Array am meisten vorkommt. Aber wie bekomme ich das raus?
 
Danke sehr, das sieht schon nicht schlecht aus. Leider bekomme ich aus dem entstanden Array mithilfe der ID einen Wert wie oft dieser vorkommt raus. Aber wie komme ich an die ID die den maximalen Wert also das vorkommen hat?
 
Code:
$array = array(1,1,1,1,1,2,2,3,3,3,4,5,5,5);

$result = array_count_values($array);

$id = array_search(max($result), $result);

print_r($id);
 
Der Code von Webentwickler funktioniert solange es immer einen einzelnen maximalen Wert gibt, was aber wenn es mehrere maximale Werte gibt?
PHP:
$array = array(1,1,1,2,2,3,3,3,4,5,5,5);
$count = array_count_values($array);
$topvalue = array_keys($count,max($count));
print_r( $topvalue );
 
Ganz nett wenn man verschachtelte Arrays sortieren möchte :-)

PHP:
//Sortierfunktionalität für Arrays
function orderbyArray()
{
    $args = func_get_args();
    $data = array_shift($args);
    foreach ($args as $n => $field) {
        if (is_string($field)) {
            $tmp = array();
            foreach ($data as $key => $row)
                $tmp[$key] = $row[$field];
            $args[$n] = $tmp;
            }
    }
    $args[] = &$data;
    call_user_func_array('array_multisort', $args);
    return array_pop($args);
}


$example[] = array("DATE" => "20171026", "DATA" => "b", "NUMBER" => 1);
$example[] = array("DATE" => "20171026", "DATA" => "a", "NUMBER" => 2);
$example[] = array("DATE" => "20171027", "DATA" => "c", "NUMBER" => 3);

$example = orderbyArray($example, 'DATE', SORT_DESC, 'DATA', SORT_ASC);

foreach ($example as $entry){
	echo $entry["DATE"]."-".$entry["DATA"]."-".$entry["NUMBER"]."<br>";
	}

Ausgabe:
20171027-c-3
20171026-a-2
20171026-b-1
 
Das ist auch was schönes, vielen Danke. Ich glaube mit
$array = array(1,1,1,2,2,3,3,3,4,5,5,5);
$count = array_count_values($array);
$topvalue = array_keys($count,max($count));
print_r( $topvalue );
komme ich erstmal am besten zurecht.
 
Zurück
Oben