php - 以递归方式添加数组的相同元素
问题描述
你好我的目标是在一个数组中添加相同的值并删除重复的值然后以重复的方式将这些重复值的总和添加到同一个数组中,直到数组的所有元素都不同为止。我做了这个代码,但它只做了一次,如何重复这个动作几次直到好的结果?谢谢
function magic($arr)
{
$result = array_filter(array_count_values($arr), function ($el) {
return $el > 1;
});
foreach ($result as $k => $val) {
$a[] = $k;
$b[] = $k * $val;
}
$c[] = array_merge(array_diff($arr, $a), $b);
return $c;
}
print_r(magic([5, 5, 8, 8, 10, 9,20, 7, 7]));//found:[10,9,20,10,16,14] excpected:[9,40,14,16]( stape to find result:[10,9,20,10,16,14]==>[20,9,20,16,14]==>[9,40,14,16])
解决方案
您可以尝试使用关联数组广告添加相同的键
foreach ($result as $k => $val) {
$a[$k] = (isset($a[$k]) ? a[$k] + $val : $val ;
}
推荐阅读
- java - Java:如何在 UTC 中获取“1000-01-01 00:00:00”的时间戳?
- python - 用定义的值替换列表列表中的元素 - Python
- laravel - Laravel - 语法错误,意外的“电话”(T_CONSTANT_ENCAPSED_STRING),期待“]”
- angular - 通过 HttpRequest 加载安全缓存的图像
- javascript - 如何在 ar.js 中使用自定义标记
- android - 从 url 获取 json 数据并更新
- arrays - Swift - 数组中的通用结构,回退并作为方法参数发送
- sql - SQLite 脚本如果不存在 (...) - 替代方案
- pandas - 根据列中的给定条件合并 Pandas 中的 2 行
- javascript - 如何防止使用 selenium web 驱动程序或使用 Javascript 重新加载页面?