真的非常感谢帮助的人们。即使你发现一切都很好,你给了我重要的线索来解决它。PHP foreach重复输出数据的最后一次迭代
//解决方案 清除第一个迭代过程,因为我打算在页面开始时完成所有操作,并将其移至主迭代。我不知道到底发生了什么,只是有一个关于引用变量的线索,然后稍后重新使用它进行新的迭代。
继承人的工作代码:
foreach ($groups as $group) {
$group['games'] = db_getGamesElimbyGroup ($group['id']);
$class_by_groupID = $group['id'];
foreach ($group['games'] as $game) {
$game['players'] = db_getPlayerElimbyGames($game['id']);
$class_by_gameID = $game['id']; ?>
<div class="group<?=$class_by_groupID?> game<?=$class_by_gameID?> item clearfix">
<? foreach ($game['players'] as $player) { ?>
<div class="player box<?=$player['casa_fora']?> clearfix">
<div class="thumb" style="background-image:url(<?=$home_path.$player['thumb']?>)"></div>
<div class="name"><?=$player['nome']?></div>
<div class="result"><?=$player['equipa_result']?></div>
</div>
<? } ?>
</div>
<?}
}
//端到端解决方案的 //新
之前获得数组我就与它这样操作:
$groups = db_getCountGroupsElim();
foreach ($groups as &$group) {
foreach ($group['games'] as &$game) {
$game['players'] = db_getPlayerElimbyGames($game['id']);
}
}
使用引用到将查询的结果添加到相同的数组。如果按原样使用该数组,或者使用JSON格式,则可以工作。我怀疑它可能必须是关于使用引用和相同的变量名称?!
// OLD
我有一个数组,有几个层次,主要是他们组,游戏中,玩家
组得到了游戏和游戏玩家了。
像这样。
JSON
[{"id":"9","name":"Oitavos","games":[{"id":"49","next_game_id":"58","players":[{"equipa_result":"0","casa_fora":"1","nome":"Lucas Neves Castro","thumb":"uploads\/1364040943\/thumb\/dsc01491.jpg","jogador_id":"2"},{"equipa_result":"1","casa_fora":"2","nome":"Jo\u00e3o Monteiro Ribeiro","thumb":"uploads\/1364249922\/thumb\/foto.png","jogador_id":"6"}]},{"id":"50","next_game_id":"58","players":[{"equipa_result":"1","casa_fora":"1","nome":"Lu\u00eds Salgado","thumb":"uploads\/1364229837\/thumb\/20130322171159.jpg","jogador_id":"1"},{"equipa_result":"0","casa_fora":"2","nome":"Pedro Fernandes","thumb":"uploads\/1364759964\/thumb\/sam_0255.jpg","jogador_id":"32"}]},{"id":"51","next_game_id":"59","players":[{"equipa_result":"1","casa_fora":"1","nome":"Pedro Costa","thumb":"uploads\/1364126670\/thumb\/pedro.jpg","jogador_id":"12"},{"equipa_result":"0","casa_fora":"2","nome":"Jos\u00e9 Vieira","thumb":"uploads\/1364134124\/thumb\/19084_540280705996807_1199242145_n.jpg","jogador_id":"13"}]},{"id":"52","next_game_id":"59","players":[{"equipa_result":"1","casa_fora":"1","nome":"Jos\u00e9 Peixoto","thumb":"uploads\/1364099591\/thumb\/foto.jpg","jogador_id":"10"},{"equipa_result":"0","casa_fora":"2","nome":"Pedro Sousa","thumb":"uploads\/1364150593\/thumb\/552121_566863856670835_1922080433_n.jpg","jogador_id":"16"}]},{"id":"53","next_game_id":"60","players":[{"equipa_result":"1","casa_fora":"1","nome":"Lu\u00eds Carvalho","thumb":"uploads\/1364150836\/thumb\/598590_119690038195872_1425120299_n.jpg","jogador_id":"17"},{"equipa_result":"0","casa_fora":"2","nome":"Jo\u00e3o Fernandes","thumb":"uploads\/1364171606\/thumb\/img_20130314_222526.jpg","jogador_id":"24"}]},{"id":"54","next_game_id":"60","players":[{"equipa_result":"1","casa_fora":"1","nome":"Patr\u00edcio Correia Santos","thumb":"uploads\/1364156207\/thumb\/dsc01877.jpg","jogador_id":"19"},{"equipa_result":"0","casa_fora":"2","nome":"Tiago Fernandes","thumb":"uploads\/1364171076\/thumb\/4232037_big.jpg","jogador_id":"23"}]},{"id":"55","next_game_id":"61","players":[{"equipa_result":"0","casa_fora":"1","nome":"Carlos Miguel Da Silva Lopes","thumb":"uploads\/1364217431\/thumb\/miguel1.jpg","jogador_id":"26"},{"equipa_result":"1","casa_fora":"2","nome":"Luis Silva","thumb":"uploads\/1364562821\/thumb\/177158_390926850971196_1987889821_o.jpg","jogador_id":"31"}]},{"id":"56","next_game_id":"61","players":[{"equipa_result":"0","casa_fora":"1","nome":"Tiago Teixeira Castro","thumb":"uploads\/1364220392\/thumb\/tiago.jpg","jogador_id":"27"},{"equipa_result":"1","casa_fora":"2","nome":"Hugo Pereira Castro","thumb":"uploads\/1364771622\/thumb\/263386_241332222564106_3344558_n.jpg","jogador_id":"29"}]}]},{"id":"10","name":"Quartos","games":[{"id":"58","next_game_id":"62","players":[{"equipa_result":"1","casa_fora":"1","nome":"Jo\u00e3o Monteiro Ribeiro","thumb":"uploads\/1364249922\/thumb\/foto.png","jogador_id":"6"},{"equipa_result":"0","casa_fora":"2","nome":"Lu\u00eds Salgado","thumb":"uploads\/1364229837\/thumb\/20130322171159.jpg","jogador_id":"1"}]},{"id":"59","next_game_id":"63","players":[{"equipa_result":"0","casa_fora":"1","nome":"Pedro Costa","thumb":"uploads\/1364126670\/thumb\/pedro.jpg","jogador_id":"12"},{"equipa_result":"1","casa_fora":"2","nome":"Jos\u00e9 Peixoto","thumb":"uploads\/1364099591\/thumb\/foto.jpg","jogador_id":"10"}]},{"id":"60","next_game_id":"62","players":[{"equipa_result":"1","casa_fora":"1","nome":"Patr\u00edcio Correia Santos","thumb":"uploads\/1364156207\/thumb\/dsc01877.jpg","jogador_id":"19"},{"equipa_result":"0","casa_fora":"2","nome":"Lu\u00eds Carvalho","thumb":"uploads\/1364150836\/thumb\/598590_119690038195872_1425120299_n.jpg","jogador_id":"17"}]},{"id":"61","next_game_id":"63","players":[{"equipa_result":"1","casa_fora":"1","nome":"Luis Silva","thumb":"uploads\/1364562821\/thumb\/177158_390926850971196_1987889821_o.jpg","jogador_id":"31"},{"equipa_result":"0","casa_fora":"2","nome":"Hugo Pereira Castro","thumb":"uploads\/1364771622\/thumb\/263386_241332222564106_3344558_n.jpg","jogador_id":"29"}]}]},{"id":"11","name":"Meias","games":[{"id":"62","next_game_id":"65","players":[{"equipa_result":"1","casa_fora":"1","nome":"Jo\u00e3o Monteiro Ribeiro","thumb":"uploads\/1364249922\/thumb\/foto.png","jogador_id":"6"},{"equipa_result":"0","casa_fora":"2","nome":"Patr\u00edcio Correia Santos","thumb":"uploads\/1364156207\/thumb\/dsc01877.jpg","jogador_id":"19"}]},{"id":"63","next_game_id":"65","players":[{"equipa_result":"0","casa_fora":"1","nome":"Jos\u00e9 Peixoto","thumb":"uploads\/1364099591\/thumb\/foto.jpg","jogador_id":"10"},{"equipa_result":"1","casa_fora":"2","nome":"Luis Silva","thumb":"uploads\/1364562821\/thumb\/177158_390926850971196_1987889821_o.jpg","jogador_id":"31"}]}]},{"id":"12","name":"3\u00ba e 4\u00ba","games":[{"id":"64","next_game_id":"0","players":[{"equipa_result":"0","casa_fora":"1","nome":"Patr\u00edcio Correia Santos","thumb":"uploads\/1364156207\/thumb\/dsc01877.jpg","jogador_id":"19"},{"equipa_result":"0","casa_fora":"2","nome":"Jos\u00e9 Peixoto","thumb":"uploads\/1364099591\/thumb\/foto.jpg","jogador_id":"10"}]}]},{"id":"13","name":"Final","games":[{"id":"65","next_game_id":"0","players":[{"equipa_result":"0","casa_fora":"1","nome":"Jo\u00e3o Monteiro Ribeiro","thumb":"uploads\/1364249922\/thumb\/foto.png","jogador_id":"6"},{"equipa_result":"0","casa_fora":"2","nome":"Luis Silva","thumb":"uploads\/1364562821\/thumb\/177158_390926850971196_1987889821_o.jpg","jogador_id":"31"}]}]}]
样本数组
Array
(
[id] => 13
[name] => Final
[games] => Array
(
[0] => Array
(
[id] => 65
[next_game_id] => 0
[players] => Array
(
[0] => Array
(
[equipa_result] => 0
[casa_fora] => 1
[nome] => João Monteiro Ribeiro
[thumb] => uploads/1364249922/thumb/foto.png
[jogador_id] => 6
)
[1] => Array
(
[equipa_result] => 0
[casa_fora] => 2
[nome] => Luis Silva
[thumb] => uploads/1364562821/thumb/177158_390926850971196_1987889821_o.jpg
[jogador_id] => 31
)
)
)
)
)
而且我在做一个foreach为每一个层次,创建一个可以更容易CSS定义样式单个元素。
我的迭代是这样的:
foreach ($groups as $group) {
$class_by_groupID = $group['id'];
foreach ($group['games'] as $game) {
$class_by_gameID = $game['id']; ?>
<div class="group<?=$class_by_groupID?> game<?=$class_by_gameID?> item clearfix">
<? foreach ($game['players'] as $player) { ?>
<div class="player box<?=$player['casa_fora']?> clearfix">
<div class="thumb" style="background-image:url(<?=$home_path.$player['thumb']?>)"></div>
<div class="name"><?=$player['nome']?></div>
<div class="result"><?=$player['equipa_result']?></div>
</div>
<? } ?>
</div>
<?}
}
好了,现在所有的重要的代码是在这里,我得到的最后一组的最后一场比赛的最后输出一个奇怪的结果。
这不是因为特定的组,我试图修改数组以获得更少的结果,仍然是最后一次重复输出。
所以我的最后一个DIV,而不是获取最后一个记录的数据,它获得了前一个,并且在两个HTML DIVS中重复,只是相同,但重复。
任何提示或建议将非常受欢迎。
在此先感谢。
能否请您粘贴数组作为JSON,所以我可以尝试调试你描述的问题?只需使用** echo json_encode($ groups)**。 –
@Rolando Isidoro:您可以在下面找到该阵列的PHP代码。应该为你做这项工作。 – hakre
@RolandoIsidoro我发布了请求的Json数据,谢谢。 – GFFR88PT