2011-06-09 57 views
0

的最後一條記錄我有這樣的功能:只顯示陣列PHP

function getLow() { 
global $db_prefix, $min; 

    //get latest week with all entered scores 
    $lastCompletedWeek = getLastCompletedWeek(); 

    $sql = "select u.userID, u.teamName "; 
    $sql .= "from " . $db_prefix . "users u "; 
    $query = mysql_query($sql); 
    while ($result = mysql_fetch_array($query)) { 

     for($i = 1; $i <= $lastCompletedWeek; $i++) { 

     $userScore = getLowScore($i, $result['userID']); 

     $win[][week] = $i; 
     $win[][user] = $result['userID']; 
     $win[][teamName] = $result['teamName']; 
     $win[][score] = $userScore; 

     } 

     $count = count($win); 
     $lowest = 0; 
     $min[score] = PHP_INT_MAX; 
     $min[user] = $result['userID']; 
     $min[teamName] = $result['teamName']; 

     for($i = 0; $i < $count; $i++) { 
     if($win[$i + 1]['user'] == $result['userID'])  { 
      if($win[$i + 3]['score'] < $min[score])   { 
       $min[score] = $win[$i + 3]['score']; 
       $lowest = $i; 
      } 

     } 

     } 

     unset($win[$lowest]); 
     unset($win[$lowest + 1]); 
     unset($win[$lowest + 2]); 
     unset($win[$lowest + 3]); 
     $win = array_values($win); 


     //print_r ($min); 

     //echo $min[teamName] . ' ' . $min[score] . ' '; 

    } 

} 

當我把它從另一個這樣PHP文件:

getLow($分鐘);

我只得到最後一個記錄....爲什麼?

這裏也是getLowScores函數。

function getLowScore($week, $userID) { 
    global $db_prefix, $user; 

    $score = 0; 

    //get array of games 
    $games = array(); 
    $sql = "select * from " . $db_prefix . "schedule where weekNum = " . $week . " order by gameTimeEastern, gameID"; 
    $query = mysql_query($sql); 
    while ($result = mysql_fetch_array($query)) { 
     $games[$result['gameID']]['gameID'] = $result['gameID']; 
     $games[$result['gameID']]['homeID'] = $result['homeID']; 
     $games[$result['gameID']]['visitorID'] = $result['visitorID']; 
     $games[$result['gameID']]['tie'] = 1; 

     if (($result['homeScore'] + (($result['visitorSpread'] * -1))) > ($result['visitorScore'] + (($result['homeSpread'] * -1)))) { 
      $games[$result['gameID']]['winnerID'] = $result['homeID']; 
     } 
     if (($result['visitorScore'] + (($result['homeSpread'] * -1))) > ($result['homeScore'] + (($result['visitorSpread'] * -1)))) { 
      $games[$result['gameID']]['winnerID'] = $result['visitorID']; 
     } 
     if (($result['visitorScore'] + ($result['homeSpread'] * -1)) == ($result['homeScore'] + ($result['visitorSpread'] * -1))) { 
      $games[$result['gameID']]['winnerID'] = $result['tie']; 
     } 

    } 

    //loop through player picks & calculate score 
    $sql = "select p.userID, p.gameID, p.pickID, p.points, u.paid "; 
    $sql .= "from " . $db_prefix . "picks p "; 
    $sql .= "inner join " . $db_prefix . "users u on p.userID = u.userID "; 
    $sql .= "inner join " . $db_prefix . "schedule s on p.gameID = s.gameID "; 
    $sql .= "where s.weekNum = " . $week . " and u.userID = " . $userID . " "; 
    $sql .= "order by u.lastname, u.firstname, s.gameTimeEastern"; 
    $query = mysql_query($sql); 
    while ($result = mysql_fetch_array($query)) { 
     if (!empty($games[$result['gameID']]['winnerID']) && $result['pickID'] == $games[$result['gameID']]['winnerID']) { 
      //player has picked the winning team 
      $score++; 
     } 
     if ($result['tie'] == $games[$result['gameID']]['winnerID']) { 
      //player has picked the winning team 
      $score++; 

     } 

    } 

    return $score; 

} 

在此先感謝您的幫助!這真讓我抓狂?

+0

我們如何回答你,你也表明'getLowScore()'執行? – 2011-06-09 00:22:09

+0

我真的很驚訝,你什麼都得到。你的函數甚至不會返回任何東西。此外,爲什麼稱它爲'getLow($ min)'?你的函數甚至不接受任何參數......你也可能會在這樣的循環中得到大量的E_NOTICE錯誤和未引用的數組索引。 – netcoder 2011-06-09 00:24:50

+0

對不起...這裏也是getLowScore函數: – Marcus 2011-06-09 00:27:24

回答

2

也許不是答案,但是這個代碼是很破:

$win[][week] = $i; 
$win[][user] = $result['userID']; 
$win[][teamName] = $result['teamName']; 
$win[][score] = $userScore; 

首先,增加了新行$贏,一個新的每次使用時間[],我非常懷疑你的意圖。

其次,那些應該引用,所以它是["week"],而不是[week]開啓PHP警告並關注它們

我想你想:

$win[] = array(
    "week" => $i, 
    "user" => $result['userID'], 
    "teamName" => $result['teamName'], 
    "score" => $userScore, 
); 

您可以顯示警告時用:

error_reporting(E_ALL); 
ini_set("display_errors",1);