PHP in_array奇怪的行为

时间:2015-08-23 13:00:27

标签: php arrays

我在飞镖点脚本中使用的in_array元素存在问题。

简要说明出了什么问题。我使用in_array来检查飞镖“单人游戏”中同一玩家的重演次数。如果一个玩家玩多个单一游戏,那么只有第一个游戏应该为玩家提供个人排名积分。

不知怎的,它反过来检查(check linked image以供参考(抱歉糟糕的油漆编辑:)))黄色是当前结果,绿色是应该如何。中间4不计算,因为它们是双倍的。

图片: In array diagram http://149.210.139.155/~dfk/tmp/inarray/matchform_inarray_mess2.png

in_array嵌套在while循环中,所以我不明白这种行为的来源。

in_array代码:

//calculate indiv points
//Player TeamA
if(!in_array($scoresheet[$f_locA][$m_id], $IndivTeamA)){
$scoreA = $scoresheet[$f_locA][$m_po] . "-" . $scoresheet[$f_locB][$m_po];
$IndivTeamA[$scoresheet[$f_locA][$m_id]][rowid] = $scoresheet[$f_locA]       [$r_id];
$IndivTeamA[$scoresheet[$f_locA][$m_id]][points] =     GetIndivScore($scoreA,$BestOf);
}
//Player TeamB
if(!in_array($scoresheet[$f_locB][$m_id], $IndivTeamB)){
$scoreB = $scoresheet[$f_locB][$m_po] . "-" . $scoresheet[$f_locA][$m_po];
$IndivTeamB[$scoresheet[$f_locB][$m_id]][rowid] = $scoresheet[$f_locB][$r_id];
$IndivTeamB[$scoresheet[$f_locB][$m_id]][points] = GetIndivScore($scoreB,$BestOf);
}

All relevant code

如果有人可以告诉我,我做错了什么或为什么这样做是这样的。我在这里或谷歌上找不到任何关于它的信息。我全力以赴地失去了3个小时。

我不希望这是可能的,因为while循环生成从第1行开始的每一行,因此不可能(对于我的逻辑至少),当php仍然需要生成时,最新的行已经在数组中它

如果我犯了一个愚蠢的错误,请提前感谢你帮我解决问题的努力。

编辑:VAR_DUMP&将行ID添加到图像

0 个答案:

没有答案