2013-07-16 4 views
0

MYSQL 데이터베이스에서 배열의 중앙값을 찾으려고합니다.중앙 데이터베이스 찾기

현재, 난 그렇게처럼 내 데이터를 잡는 오전 :

$middleMonth = "SELECT Day, COUNT(Day) AS totalNumber FROM finalbaby GROUP BY Day ORDER BY COUNT(Day) DESC LIMIT 1, 300"; 
$middleResult = mysql_query($middleMonth); 

나는 다음과 같이 배열로를 걸었습니다.

  sort($names); 
      $count = count($names); 
      $middleval = floor(($count-1)/2); 
       if($count % 2) { 
        $median = $names[$middleval]; 
       } else { 
        $low = $names[$middleval]; 
        $high = $names[$middleval+1]; 
        $median = (($low+$high)/2); 
       } 

     return $median; 

     } 

     var_dump($names); 

내가 오류를 받고 있지 않다,하지만 내 응용 프로그램 충돌 :

$names=array(); 
while($row = mysql_fetch_assoc($middleResult)) { 
$names[] = $row['Day']; 

나는 그 배열의 중간을 찾기 위해 노력하고있다.

내가 뭘 잘못하고 있는지에 대한 제안이 있으십니까?

+0

첫 번째 행을 건너 뛰고 반환하지 않는 이유가 있습니까? 일반적으로 첫 번째 행을 건너 뛰고 두 번째 행부터 시작하는 행을 'LIMIT 1,300'으로 반환하는 대신 'LIMIT 0,300'을 사용하여 첫 번째 행을 포함시키고 자합니다. – spencer7593

+0

죄송합니다. Spencer. 결정된. – qweqweqwe

+0

세 번째 코드 블록 이전에 두 번째 코드에서 검정을 잠시 닫고 있습니까? – amaster

답변

1

세 번째 코드 블록 전에 두 번째 코드 검정을 잠시 닫고 있습니까?

대답 :

나는 ... 세 번째 코드 블록에서 코드를 실행하기 전에} 내 마지막이 의지를

실패 두 번째 코드 블록에 ... 가까운 동안을 잠시 닫습니다 mysql이 반환하는 행에서 이름을 설정할 때마다 중간 값을 찾는 대신 한 번만 중간 값을 찾습니다. 처음으로 이름 수는 1이되고 1 = 0을 빼고 2로 나눕니다. 이것은 0을 줄 것입니다. 그런 다음 0과 2의 나머지를 얻으려고합니다. 이것은 나머지 코드를 버립니다. 이 시도 :

$middleMonth = "SELECT Day, COUNT(Day) AS totalNumber FROM finalbaby GROUP BY Day ORDER BY COUNT(Day) DESC LIMIT 1, 300"; 
$middleResult = mysql_query($middleMonth); 
$names=array(); 
while($row = mysql_fetch_assoc($middleResult)) { 
    $names[] = $row['Day']; 
} 
sort($names); 
$count = count($names); 
$middleval = floor(($count-1)/2); 
if($count % 2) { 
    $median = $names[$middleval]; 
} else { 
    $low = $names[$middleval]; 
    $high = $names[$middleval+1]; 
    $median = (($low+$high)/2); 
} 
echo $median; 
var_dump($names); 

//previous code 
//if this code is inside function then return if not then print 
//return $median; 
//if this code is inside function then the return above will cancel this var_dump 
//var_dump($names); 

또한

경고를 기억하시기 바랍니다! 이 확장은 PHP 5.5.0부터 제공되지 않을 예정이며 이후에 삭제 될 예정입니다. 대신 MySQLi 또는 PDO_MySQL 확장자를 사용해야합니다. 자세한 내용은 MySQL: choosing an API 가이드 및 related FAQ을 참조하십시오.