摘要:我要获得尽可能理想的数据,那么应该分别返回条。我总共需要条数据,数据库中满足条件的有类数据,他们总数分别是条。上面的代码就实现了这一目的。
话不多说,上代码,不懂原理与目的可以对照注释
/** * 根据给定的总数值返回每个单元的最值平均数 * * @param integer $num 总共需要被平均的值 * @param array $data 提供的数据 * * @example $num = 12 * $data = [ * "a" => 5, * "b" => 6, * "c" => 2, * ] * * @return [ * "a" => 5, * "b" => 5, * "c" => 2, * ] */ if (! function_exists("get_avg_data")) { function get_avg_data($num, array $data) { $sum = array_sum($data); // 如果数组内小于需要数值 if ($num >= $sum){ $reData = $data; } else { asort($data); $reData = handle_avg_data($num, $data); } return $reData; } } // 处理数据 if (!function_exists("handle_avg_data")){ function handle_avg_data(&$num, array &$data) { $n = count($data); $avg = (int)($num / $n); $y = $num % $n; $reData = []; $preData = $data; foreach ($data as $key => $value) { if ($value <= $avg){ $reData[$key] = $value; unset($data[$key]); $num = $num - $value; } } if (count($preData) == count($data)){ if ($y == 0){ foreach ($data as $k => $v){ $reData[$k] = $avg; unset($data[$k]); } } else { foreach ($data as $k => $v){ $reData[$k] = $avg + 1; $num = $num - $avg - 1; unset($data[$k]); break; } } } $reD = []; if (count($data) > 0){ $reD = handle_avg_data($num, $data); } return array_merge($reData, $reD); } }
好吧,再举一个例子eg①:我总共需要30条数据,数据库中满足条件的有4类数据,他们总数分别是4,5,15,19条。
我要获得尽可能理想的数据,那么应该分别返回 4,5,11,10条。
eg②:我总共需要30条数据,数据库中满足条件的有4类数据,他们总数分别是12,6,15,19条。
我要获得尽可能理想的数据,那么应该分别返回 8,6,8,8条。
……
上面的代码就实现了这一目的。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28307.html
摘要:软删除当模型被软删除后,它们并没有真的从数据库删除,而是在模型上设置一个属性并插入数据库,如果模型有一个非空值,那么该模型已经被软删除了。 Laravel 中Eloquent ORM 相关操作 定义 操作 获取(查询) 获取集合,(查询列表) 返回值是 IlluminateDatabaseEloquentCollection 的一个实例 获取所有的数据 use AppUser; $us...
摘要:前言集合通过进行实例,的内核大部分的参数传递都用到了集合,但这并不代表集合就是好的。当你需要处理一组数组时,你可能就需要它帮助你快捷的解决实际问题。例如我们需要通过一个水平线切分数组,将其分为个及以上的数组个数。谢谢,还不抓紧去练习下集合 showImg(https://segmentfault.com/img/bVbhjvY?w=600&h=296); 前言 集合通过 Illumin...
摘要:传统方法比如说你想监控你容器的内存使用率。不支持维度数据,这样一个名为的容器的指标,可能被称为。这是非常伟大并且有用的,但是有限制性。这个输出器使用容器的名字,和镜像作为维度。 本文的原作者是 johannes-fish-ziemke,原文地址是 http://5pi.de/2015/01/26/monitor-docker-containers-with-prometheus/...
阅读 3202·2021-11-24 10:43
阅读 4162·2021-11-24 10:33
阅读 3710·2021-11-22 09:34
阅读 2094·2021-10-11 10:58
阅读 3645·2021-10-11 10:58
阅读 831·2021-09-27 13:36
阅读 3537·2019-08-30 15:54
阅读 2911·2019-08-29 18:41