Как найти режим массива в PHP

У меня есть массив, который был отсортирован от низкого до высокого, который имеет более 260 тыс. Значений. Я выяснил, что среднее (среднее) и медианное значение массива просто нужно найти в режиме?

Я не могу использовать какие-либо математические функции, которые имеет PHP, все это нужно сделать вручную.

Я бы хотел, чтобы это могло быть только одно значение, которое является режимом, но тогда может быть несколько значений, которые могут быть режимом. Я также должен иметь возможность записывать количество раз, когда значение хранится. Например, число 51 появляется 6 раз, поэтому я могу напечатать оба значения.

Это мой код:

$amountRecords = 0; $totalValue = 0; $valueArray = array(); // reads in csv file $handle = fopen('Task1-DataForMeanMedianMode.csv', 'r'); // to skip the header names/values fgetcsv($handle); // creates array containing variables of csv file in ascending order while(($row = fgetcsv($handle, "\r")) != FALSE) { // if amountRecords equals 0 if($amountRecords == 0) { // adds value from csv to array $valueArray[] = $row[1]; } // else amountRecords does not equal 0 else { // if the value in array location before is greater than the current value from the csv file if($valueArray[$amountRecords - 1] > $row[1]) { // the current array location becomes the one in the location before $valueArray[] = $valueArray[$amountRecords - 1]; // add the value from the csv to the location before $valueArray[$amountRecords - 1] = $row[1]; } // if the value in the location before is not greater than the current value in the csv file else { // adds value from csv to array $valueArray[] = $row[1]; } } // calculates the total value of the values in csv file $totalValue = $totalValue + $row[1]; // calculates the number of values in the csv file $amountRecords++; } // calculate average value of payments $averageValue = $totalValue / $amountRecords; // limit integer to 2 decimal place $average = number_format($averageValue,2,'.',''); // finds middle value $middle = floor(($amountRecords / 2) - 1); // calculates the median value // if array size is even if($amountRecords % 2 == 0) { // calculates median $median = $valueArray[$middle]; } else // if array size is odd { // calculate low and high values $low = $valueArray[$middle]; $high = $valueArray[$middle + 1]; // calculates median $median = (($low + $high) / 2); } // works out mode // creates array count $count = array(); // for each value in the valueArray foreach( $valueArray as $value ) { if( isset( $count[$value] )) { $count[$value]++; } else { $count[$value] = 1; } } $mostCommon = ""; $iter = 0; foreach( $count as $k => $v ) { if( $v > $iter ) { $mostCommon = $k; $iter = $v; } } $modeArray = array( "mode" => $mostCommon , "count" => $iter ); 

Related of "Как найти режим массива в PHP"

Режим числового набора – это число, которое встречается наиболее часто. Вы можете сделать это с помощью PHP, используя следующий код:

 $values = array_count_values($valueArray); $mode = array_search(max($values), $values); 

Просто!

 $arr = array(4,6,7,1,4,7,4,7,1); $freq = array(); for($i=0; $i<count($arr); $i++) { if(isset($freq[$arr[$i]])==false) { $freq[$arr[$i]] = 1; } else { $freq[$arr[$i]]++; } } $maxs = array_keys($freq, max($freq)); for($i=0; $i<count($maxs); $i++) { echo $maxs[$i] . ' ' . $freq[$maxs[$i]]; echo '<br />'; }