【发布时间】:2021-11-01 07:27:09
【问题描述】:
我想在我的数组中保留重复项,并且只在多次找到一个值时删除一次。
给定一个数组:
$array = ['+5', '+5', '+3', '+3', '+3', '+3', '+5', '+5'];
+5 和 +3 各出现四次。我想只删除一个 +5 值和一个 +3 值,然后找到剩余值的总和。
$duplicate = ['+5', '+3'];
$array = ['+5', '+5', '+3', '+3', '+3', '+3', '+5', '+5'];
$i = 0;
foreach ($duplicate as $dup) {
if (strpos($duplicate[$i], '+') !== false) {
$duplicate[$i] = preg_replace('/[^0-9,:]/', '', $duplicate[$i]);
$duplicate[$i] = "-$duplicate[$i]";
}
$i++;
}
$sum = array_merge($duplicate, $array);
$end_value = array_sum(array_values($sum));
var_export($end_value);
对于我的输入,最终的总和应该是 24 (15 + 9)。
【问题讨论】:
-
我不明白
the cards count them self。请通过根据您的样本输入呈现您想要的确切结果来强化所需的逻辑。你期待这个吗? 3v4l.org/24GRd -
我看到
explode()被调用,但我没有看到$expode在任何地方使用。我们是否使用连字符分隔的字符串 ($player_cards[$i2])?如果是这样,我可以在没有迭代函数调用的情况下删除重复项。请进一步解释。 -
$player_cards 只是一个卡片列表,不需要explode() 我并不是要在代码中添加它。谢谢你的帮助,但我确实找到了一种方法来解决这个问题,方法是创建一个 $duplicate_array,并将重复项添加到数组中。然后我在那里取相反的值并将它们添加到主 $add_p1_f1 数组
-
解决编程问题的方法通常不止一种。对于未来的研究人员来说,你的问题非常清楚是很重要的。请将请求的详细信息添加到您的问题中,并确认我的解决方案是否提供了您的预期输出。
-
没有。您不了解 Stack Overflow 页面设计。请拨打tour。您正在弄得一团糟,而不是像我问的那样提出完整的问题。您忽略了我确认我的演示链接提供所需结果的请求。这是新的必需输出,对吗? 3v4l.org/M20nU
标签: php arrays sum duplicates filtering