2014-06-25 86 views
0

我正在循環兩個陣列(健身房和遊戲),並將$ gym ['id']值與$ game ['gym_id']進行比較。如果兩個值匹配,我將顯示遊戲日期和時間,如下所示。Loop Through 2陣列和顯示值

<?php 
$gyms = sw::shared()->gyms->getAll(); 
$games = sw::shared()->games->getAll(); 
?> 

<?php foreach ($gyms as $gym) { ?> 
    <?php foreach ($games as $game) { ?> 
     <?php if ($game['gym_id'] == $gym['id']) { ?> 
      <?php $match++; ?> 
      <?php echo $gym['gym_name']; ?><br> 
      <?php echo $game['date']; ?> <?php echo $game['time']; ?><br> 
     <?php } ?> 
    <?php } ?> 
<?php } ?> 

我也顯示與$健身房[「gym_name」]健身房的名字,但我只想健身房的名字一次表明,如果該健身房設有遊戲,這意味着它應該是這樣的:

GYM 1 NAME 
GAME 1 DATE GAME 1 TIME 
GAME 2 DATE GAME 2 TIME 
GAME 3 DATE GAME 3 TIME 

GYM 2 NAME 
GAME 4 DATE GAME 4 TIME 
GAME 5 DATE GAME 5 TIME 
GAME 6 DATE GAME 6 TIME 

我該如何重寫?

+2

在外環回聲健身房名稱,而不是內之一。 –

+0

不,因爲那會顯示所有健身房,即使健身房沒有分配給他們的遊戲。我只想向遊戲展示健身房。 – cpcdev

+0

我認爲他的意思是,只在最後迴應它,所以你會得到最後的結果。或者將你正在查找的值設置爲另一個變量並回顯出來。 – durbnpoisn

回答

1

嘗試這樣的事情。

<?php 
$gyms = sw::shared()->gyms->getAll(); 
$games = sw::shared()->games->getAll(); 

function getGymGames($gym){ 
    $gymGames = array(); 
    foreach ($games as $game) { 
     if ($game['gym_id'] == $gym['id']) { 
      array_push($gymGames,$game); 
     } 
    } 

    return $gymGames; 
} 

?> 

<?php 
    foreach ($gyms as $gym) { 
     $gymGames = getGymGames($gym); 
     if(count($gymGames) > 0){?> 
      <?=$gym['gym_name'];?><br /> 
      <?foreach($gymGames as $game){ 
      $match++; 
      ?> 
      <?= $game['date']; ?><br /> 
      <?= $game['time']; ?><br> 
      <?} 
     } 
    } 
?> 
+0

這個伎倆,謝謝。 – cpcdev

1

我不完全熟悉PHP,但爲什麼不把布爾值,標誌是否已經又顯示,一旦顯示打開它。

<?php 
$gyms = sw::shared()->gyms->getAll(); 
$games = sw::shared()->games->getAll(); 
?> 

<?php foreach ($gyms as $gym) { ?> 
<?php $notDisplayed=true; ?> 
<?php foreach ($games as $game) { ?> 
    <?php if ($game['gym_id'] == $gym['id']) { ?> 
     <?php $match++; ?> 
     <?php if($displayed) { ?> 
      <?php echo $gym['gym_name']; ?><br> 
      <?php $notDisplayed=false;?> 
     <?php } ?> 
     <?php echo $game['date']; ?> <?php echo $game['time']; ?><br> 
    <?php } ?> 
<?php } ?>