2016-08-22 157 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

相关问题