2013-11-26 4 views
0

У меня возникли проблемы с попыткой изменить этот код, чтобы он отображал повторяющиеся данные. Теперь массив $ playerPicks выглядит как «массив A», мне бы хотелось, чтобы он извлекал данные из базы данных и отображал их как «массив B». Данные находятся в базе данных. но не показывать его, как хотелось бы. Это, вероятно, что-то простое для более продвинутых, я все еще изучаю. Спасибо.show Дублирующие значения в массиве

Код

$sql = "select distinct weekNum from " . $db_prefix . "schedule order by weekNum;"; 
$query = mysql_query($sql); 
$i = 0; 
while ($result = mysql_fetch_array($query)) { 
if ($i > 0) $weekNav .= ' | '; 
if ($week !== (int)$result['weekNum']) { 
    $weekNav .= '<a href="results.php?week=' . $result['weekNum'] . '">' . $result['weekNum'] . '</a>'; 
} else { 
    $weekNav .= $result['weekNum']; 
} 
$i++; 
} 

$playerPicks = array(); 
$playerTotals = array(); 
$sql = "select p.userID, p.gameID, p.pickID "; 
$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.userName <> 'admin' "; 
$sql .= "order by p.userID, s.gameTimeEastern, s.gameID"; 
$query = mysql_query($sql); 
$i = 0; 
while ($result = mysql_fetch_array($query)) { 
$playerPicks[$result['userID']][$result['gameID']] = $result['pickID']; 
if (!empty($games[$result['gameID']]['winnerID']) && $result['pickID'] == $games[$result['gameID']]['winnerID']) { 
    //player has picked the winning team 
    $playerTotals[$result['userID']] += 1; 
} else { 
    if ($playerTotals[$result['userID']] += 0); 
} 
$i++; 
} 

echo '<pre>'; 
print_r($playerPicks); 
echo '<pre>'; 

Выход

Array A 
(
[2] => Array 
    (
     [433] => GB 
    ) 

[924] => Array 
    (
     [435] => PIT 
    ) 

[934] => Array 
    (
     [434] => OAK 
    ) 

) 



Array B 
(
[2] => Array 
    (
     [433] => GB 
     [433] => GB 
    ) 

[924] => Array 
    (
     [435] => PIT 
     [435] => PIT 
    ) 

[934] => Array 
    (
     [434] => OAK 
     [434] => OAK 
    ) 

) 
+0

Возможные связанный с этим вопрос: http://stackoverflow.com/questions/1259407/php-return-only-duplicated-entries-from-an-array –

ответ

0
[2] => Array 
    (
     [433] => GB 
     [433] => GB 
    ) 

Это не представляется возможным. Им нужно иметь уникальные ключи. Вам нужно найти лучший способ структурирования ваших данных. Зачем вам нужна дублируемая информация?

Вот один пример того, как вы могли бы сохранить ваши данные

[2] => Array 
     (
      [433] => Array 
          (
           [type] => GB 
           [amount] => 2 
          ) 
      [435] => Array 
          (
           [type] => PIT 
           [amount] => 5 
          ) 
     ) 

EDIT:

его не большое изменение, если вы измените

в

$playerPicks[$result['userID']][$result['gameID']][] = $result['pickID']; 

вы получите

[123] => Array 
     (
      [456] => Array 
       (
        [0] => GB 
        [1] => GB 
       ) 

      [454] => Array 
       (
        [0] => PIT 
       ) 

     ) 
+0

мне нужна эта информация, чтобы заселить в моя форма. но, как вы сказали, это уникальные ключи ['gameID']. Я думал, что будет простой способ сделать это, а затем реструктурировать данные. – Rickos

+0

добавил (а) изменения, может быть, это поможет – Lohardt

+0

, хотя это выглядит хорошо, но оно сильно изменяет $ playerPicks, а остальная часть кода на других страницах не может его правильно прочитать. im все еще пытается. – Rickos

Смежные вопросы