【发布时间】:2016-12-29 14:18:43
【问题描述】:
我似乎遇到过几次这个问题并弄清楚了,但是下次遇到它时我就无法弄清楚了。
所以我有一个 SQL 语句,它照常返回 $result 变量...
$result = $stmt->fetchAll( PDO::FETCH_ASSOC );
我会在下面向你展示一个瘦身的回报
数组
(
[开斋节] => 1
[eTitle] => 超级联赛
[eDesc] =>
[cid] => 1
[删除] => 0
[eStartTime] => 15:00
[eHome] => 1
[轻松] => 2
[eKickoff] => 15:00:00
[日期] => 2016-08-20
)
大批
(
[开斋节] => 2
[eTitle] => 足总杯
[eDesc] =>
[cid] => 1
[删除] => 0
[eStartTime] => 15:00
[eHome] => 1
[轻松] => 2
[eKickoff] => 15:00:00
[日期] => 2016-08-27
)
现在我要做的是遍历 $result 并在每个键 eHome 和 eAway 上运行下面的函数是我正在尝试做的伪代码。
loop ( $reult )
$row[eHome][eHomeData] = $this->getTeam( $row['eHome'] )
$row[eHome][eAwayData] = $this->getTeam( $row['eAway'] )
所以基本上我想用主队或客队数据重建数组,这些数据使用 eHome 和 eAway 中给出的 id。
我应该这样做还是应该在 MySQL 中使用 JOINS?
对不起,如果我措辞不好,我已经为此苦苦挣扎了几个小时并放弃了。
提前谢谢各位。
汤姆
【问题讨论】:
-
如果
$this->getTeam是另一个查询,那么您可能应该使用连接。循环中的查询或基于另一个查询结果的查询几乎总是意味着您的数据库\代码结构不佳。但根据提供的信息,这确实无法回答 -
所以您还想在之后删除 eAway 键?
-
我认为没有足够的信息来说明您最初从哪里获得的数据以及所需的输出是什么(以及为什么)。结果数据集与您已经获得的数据集没有太大区别......它只是合并到一个子数组中。
-
如果我尝试提前考虑:我假设
getTeam(id)提供了该特定团队的所有数据。所以我会运行一个查询来获取第一个查询('....where team_id in(1,2,3,4,)')中涉及的所有团队数据,并将其存储到一个以 id 为键的数组中。 -
抱歉打乱了问题,我 $this->getTeam($id) 查询数据库并返回特定事件的团队名称和数据。即 man utd vs chelsea,第一个查询返回带有两个团队 id 的事件,然后是函数 getTeam 我想要每个团队的数据,而不仅仅是我们当前所在的事件函数中设置的 id
标签: php arrays for-loop foreach while-loop