I want to find mean, median and mode of an array. I can find mean and median but but when I run the program, I get
Warning: array_count_values(): Can only count STRING and INTEGER values! in C:\AppServ\www\tez\tez2.php on line 40" error fore finding mode.
I searched but couldn't fix it. Is there anyone who can help me with that ?
My Code:
<!DOCTYPE html>
<html>
<head>
<title>Tez Deneme</title>
</head>
<body>
</body>
</html>
<?php
echo "Welcome to my project".'<br>'.'<br>';
$arr=array(1100,3150,4400,4400,5170,7450,7450,7450,8230 );
for($i=0; $i<=8; $i++)
{
if ($arr[$i]<100) {
$arr[$i]=$arr[$i];
}else{
$arr[$i]=$arr[$i]/1000;
$arr1[$i]=$arr[$i];
}
}
function calculate($arr, $output){
switch($output){
case 'mean':
$count = count($arr)+1;
$sum = array_sum($arr);
$total = $sum / $count;
break;
case 'median':
rsort($arr);
$middle = (count($arr) / 2)+1;
$total = $arr[$middle-1];
break;
case 'mode':
$v = array_count_values($arr);
arsort($v);
foreach($v as $k => $v){$total = $k; break;}
break;
}
return $total;
}
function sd_square($x, $total) {
return pow($x - $mean,2);
}
function sd($arr) {
return sqrt(array_sum(array_map("sd_square", $arr, array_fill(0,count($arr), (array_sum($arr) / count($arr)) ) ) ) / (count($arr)-1) );
}
if (isset($_POST['select'])) {
someFunction();
}
echo ' '.'<br>';
echo "Values: ";
echo json_encode($arr).'<br>';
echo 'Mean: '.calculate($arr, 'mean').'<br>';
echo 'Median: '.calculate($arr, 'median').'<br>';
echo 'Mode: '.calculate($arr, 'mode').'<br>';
echo "Standart Derivation: ".sd($arr);
?>