【问题标题】:Finding duplicate values in one dimension of multidimensional array在多维数组的一维中查找重复值
【发布时间】:2014-04-27 03:55:50
【问题描述】:

我一整天都在搜索档案,但未能找到我的问题的答案。我希望有人能指出我正确的方向。

问题

由于无法识别并列的球队(重复的胜率)和打破这些平局的逻辑(超出本问题的范围),我无法测试正面交锋的结果并最终正确地对球队进行排名。

问题

我该怎么做:

  1. 确定哪些球队的胜率相同(某些球队的总比赛场数可能不同)
  2. 计算并列的球队数量。

多维数组示例

我有一个多维数组,其中存储包含团队编号、胜负、分差和胜率的数组。

例子:

$team_array = array(
array(68, 6, 0, 10, 1.000),
array(65, 6, 0, 8, 1.000),
array(62, 6, 0, 4, 1.000),
array(54, 3, 3, 3, .500),
array(55, 3, 3, -5, .500),
array(59, 0, 6, -16, .000)
);

我需要帮助仅在多维数组的一维中查找重复值(获胜百分比或 $team_array[$x][4]。我不知道是尝试查找重复值还是消除唯一值更好) .

如果有人有任何想法或建议,我将不胜感激。

提前致谢!!!!

【问题讨论】:

  • 我知道这不是您问题的答案,但是您是否考虑过使用 OOP 而不是数组?在我看来,使用 OOP 会简化问题

标签: php arrays multidimensional-array duplicates


【解决方案1】:

编辑以前的代码不起作用。

// $seenDuplicate[ Percentage ][] = indexes which have this percentage.
foreach(team_array as $ind => $team){
    $trackPercentages[$team[4]][] = $ind;
}
// then you can count the number of each array in $trackPercentages

回复第一条评论: 它返回 3,因为它包含所有百分比,无论是否重复。第一个是 1.000,第二个是 0.5000,第三个是 0.0000

foreach($trackPercentages as $perc => $list){
        $echo "Teams with " . $perc . "% wins.<br>";
        foreach($list as $team){
            echo $team."<br>";
        }
        echo "<br>";
}

如果你只想显示重复,那么在第一个 foreach 循环之后,检查:

if(count($list)>1)

而且我相信 ksort 可以用来根据索引对数组进行排序。

【讨论】:

  • 感谢您尝试解决方案。我在上面运行了您的代码,并添加了: $cnt = count($trackPercentages); echo "cnt - $cnt
    ";不幸的是,这会返回“3”。这将协调具有 3 个“1.000”值,但它不考虑其他 2 个重复值。 “.500”。对于任何解决方案,我都需要与重复获胜百分比相关联的 team_id。我认为按 win_percentage 对数组列表进行排序然后遍历外部数组以比较值可能是有意义的。类似于: if($tm_array[$row][4] == $tm_array[$row+1][4]) { $dup++; }
  • 再次...感谢您的帮助!如果您有任何其他想法或建议,绝对欢迎!
猜你喜欢
  • 1970-01-01
  • 2013-10-14
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
相关资源
最近更新 更多