2016-08-22 156 views
-1

我似乎得到了這個問題幾次,並找出它,然後下次我遇到它我無法弄清楚。PHP循環一個數組並運行一個數組項目上的函數

所以我必須返回到$結果變量如常SQL語句...

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

我會告訴你下面

Array 
(
    [eid] => 1 
    [eTitle] => premier league 
    [eDesc] => 
    [cid] => 1 
    [deleted] => 0 
    [eStartTime] => 15:00 
    [eHome] => 1 
    [eAway] => 2 
    [eKickoff] => 15:00:00 
    [eDate] => 2016-08-20 
) 
Array 
(
    [eid] => 2 
    [eTitle] => fa cup 
    [eDesc] => 
    [cid] => 1 
    [deleted] => 0 
    [eStartTime] => 15:00 
    [eHome] => 1 
    [eAway] => 2 
    [eKickoff] => 15:00:00 
    [eDate] => 2016-08-27 
)

現在瘦了什麼樣的回報,我想do循環遍歷$ result,並在每個關鍵的eHome和eAway上運行一個函數,這是我嘗試去做的僞代碼。

loop ($reult) 

$row[eHome][eHomeData] = $this->getTeam($row['eHome']) 
$row[eHome][eAwayData] = $this->getTeam($row['eAway']) 

所以基本上我想重建與家庭或團隊數據使用eHome和eAway中給出的ID數組。

我應該這樣做還是應該在MySQL中使用JOINS?

對不起,如果我已經說得這麼糟糕,我已經掙扎了幾個小時,並放棄了。

在此先感謝你們。

湯姆

+1

添加的循環收集的數據,如果'$這個 - > getTeam'是另一個查詢的print_r(),那麼你應該可能正在使用連接。基於另一個查詢結果的循環查詢或查詢幾乎總是意味着您的數據庫\代碼結構很差。但真的這是不可能的基礎上提供的信息 – 2016-08-22 22:19:32

+0

所以你也想刪除eAway的關鍵? –

+0

我認爲沒有足夠的信息來說明您最初從哪裏獲得的數據以及期望的輸出是什麼(以及爲什麼)。結果數據集與您已經得到的數據集沒有多大區別......它只是合併到一個子數組中。 – Jeff

回答

0

這是我到底傢伙遺憾的措辭不當問題,都習慣了。有沒有更好的方法來做到這一點,這裏是代碼,然後print_r()轉儲給你看看我要去哪裏。

$stmt = $this->conn->prepare(' 
    SELECT * from events WHERE cid = :cid 
'); 

$stmt->bindParam(':cid', $categoryid, PDO::PARAM_INT); 

if($stmt->execute()) 
{ 
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    $resultCount = count($result); 

    for($i = 0; $i < $resultCount; $i++) { 

     $result[$i]['homeTeamData'] = $this->getTeam($result[$i]['eHome']); 
     $result[$i]['awayTeamData'] = $this->getTeam($result[$i]['eAway']); 
    } 
} 

下面是它增加了一個額外的awayTeamData和homeTeamData與上述

 
Array 
(
    [0] => Array 
     (
      [eid] => 1 
      [eTitle] => premier league 
      [eDesc] => 
      [cid] => 1 
      [deleted] => 0 
      [eStartTime] => 15:00 
      [eHome] => 1 
      [eAway] => 2 
      [eKickoff] => 15:00:00 
      [eDate] => 2016-08-20 
      [homeTeamData] => Array 
       (
        [tid] => 1 
        [tName] => Chelsea 
        [deleted] => 0 
       ) 

      [awayTeamData] => Array 
       (
        [tid] => 2 
        [tName] => Man Utd 
        [deleted] => 0 
       ) 

     ) 

    [1] => Array 
     (
      [eid] => 2 
      [eTitle] => fa cup 
      [eDesc] => 
      [cid] => 1 
      [deleted] => 0 
      [eStartTime] => 15:00 
      [eHome] => 1 
      [eAway] => 2 
      [eKickoff] => 15:00:00 
      [eDate] => 2016-08-27 
      [homeTeamData] => Array 
       (
        [tid] => 1 
        [tName] => Chelsea 
        [deleted] => 0 
       ) 

      [awayTeamData] => Array 
       (
        [tid] => 2 
        [tName] => Man Utd 
        [deleted] => 0 
       ) 

     ) 

) 
+0

getTeam做什麼? – Jeff

+0

getTeam是一個函數,它查詢數據庫在這種情況下返回[homeTeamData]和[awayTeamData],但如果未提供$ tid,但該函數能夠將數據庫中的所有團隊帶回,但如果僅提供了id一個團隊返回。 –

+0

你應該更好地編輯你的問題,而不是把它作爲答案。還提供了函數'getTeam'。 – Jeff

相關問題