2016-10-10 4 views
0

나는 다양한 축구 선수들의 합격 점수를 계산하고 있습니다. 정보를 가져 오는 .txt 파일이 있습니다. 여기 내 .txt 인 파일에서 읽어 달러 (A $)의 FP를 사용하고있어 내 함수의 부분이었다 Array_filter를 사용하여 더 작은 연관 배열로 큰 연관 배열

while($line = fgetcsv($fp, 255, ',')){ 
$rate = round(calcPR($line),2); 
$rating[$line[0]] = $rate; 
} return $rating; 

내가 내 데이터를 표시하기 전에 내가 데이터를 표시하려고 만하고있어 어디 나는 위대하고, 좋고, 평범하고, 가난한 합격 점수로 데이터를 분할하려한다.

$grtRating = array_filter($rating,function(){ 
     return $rating > 95; 
}); 

그냥 같은 약, 좋은 평범한, 가난한 외모에 대한 내 코드의 나머지 부분,하지만 서로 다른 기준 : 좋은 평가를 들어

, 그들은 내가이 95 이상이어야합니다. 이 $ grtRating 배열에 95 이상의 점수 만 저장하려면 어떻게해야합니까?

현재 내 프로그램을 실행하면 기본적으로 운영자를 무시하고 낮은 점수를 받더라도 등급을 모두 표시합니다.

는 UPDATE : $ poorRating 배열의 출력 : 나는 문제가 다음 어떻게 출력 내 코드에있을 수 있습니다 생각

Array ([Cody Kessler] => 85.91 [Kirk Cousins] => 82.34 [Jacoby Brissett] => 81.68 [Ryan Tannehill] => 81.2 [Tyrod Taylor] => 79.29 [Ben Roethlisberger] => 77.49 [Shaun Hill] => 77.32 [Carson Palmer] => 74.79 [Jameis Winston] => 73.93 [Marcus Mariota] => 73.06 [Joe Flacco] => 71.77 [Cam Newton] => 70.32 [Josh McCown] => 70.25 [Trevone Boykin] => 69.2 [Jay Cutler] => 68.46 [Blake Bortles] => 67.13 [Brock Osweiler] => 66.1 [Blaine Gabbert] => 63.35 [Case Keenum] => 60.63 [Ryan Fitzpatrick] => 48.93 [Robert Griffin III] => 48.54 [Drew Stanton] => 34.36 [Kellen Clemens] => 2.07) 

(이 모든 < 86). 정렬되지 않은 목록에 내 링크가 있습니다. '나는 pr.php?action=great', pr.php 행동 = 좋은', pr.php?action=mediocre', and pr.php 행동 =? '가난한이

<a href='pr.php?action=all'>All Ratings</a> 

: 여기

은 예입니다.

내가 모든 것을 출력하는 방법은 다음과 같습니다. 어떻게해야합니까?

$mode = 'all'; 

if ($_GET['action'] == 'great') $mode = 'great'; 
if ($_GET['action'] == 'good') $mode = 'good'; 
if ($_GET['action'] == 'mediocre') $mode = 'mediocre'; 
if ($_GET['action'] == 'poor') $mode = 'poor'; 

    if($mode == 'great'){ 
        foreach($greatRating as $name=>$pr){ 
          echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n"; 
        } 
      } 
      if($mode == 'good'){ 
        foreach($goodRating as $name=>$pr){ 
        echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n"; 
        } 
      } 
      if($mode == 'mediocre'){ 
        foreach($mediocreRating as $name=>$pr){ 
        echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n"; 
        } 
      } 
      if($mode == 'poor'){ 
        foreach($poorRating as $name=>$pr){ 
        echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n"; 
        } 
      } 
      if($mode = 'all'){ 
        foreach($rating as $name=>$pr){ 
        echo "<tr><td>{$name}</td><td>{$pr}</td></tr>\n"; 
        } 
      } 


    echo "</table></div>\n"; 
} 

제 실수가 어디에서 발생했는지 파악해주세요.

+0

당신의'$ greatRating'은'$ grtRating' 이여 야합니다. –

+0

지금'$ grtRating'으로 바꾸었지만 여전히 작동하지 않습니다. 편집 : 그냥 농담, 그게 전부 였어, 나는 바보 같은 느낌. 나는 당신의 대답을 정확하게 표시 할 것입니다! – CSGuy94

답변

1

처음에

$grtRating = array_filter($rating, function($val) { 
    return $val > 95; 
}); 

$grtRating = array_filter($rating,function(){ 
    return $rating > 95; 
}); 

, 당신은 하나가 사용되는 배열의 각 반복에서 전달 된 값을 포함하는 콜백 인수를 포함하지 않았다 교체 귀하의 평가에서.

+0

이것은 여전히 ​​모든 값을 출력합니다. 데이터 출력 루프에 내가 잘못했을 가능성이 있습니까? 이 점이 내가 그 이름과 등급을 연관 짓는 차이점이 있는가? 우연히 숫자에 대해 이름을 확인하는 것입니까? – CSGuy94

+0

'print_r ($ rating)'을 시도해보고 출력을 보여줄 수 있습니까? –

+0

출력은 다음과 같습니다.'Array ([EJ Manuel] => 127.07 [Jimmy Garoppolo] => 119.02 [Matt Ryan] => 117.36)'더 많은 가치가 있습니다. – CSGuy94