摘要:我要获得尽可能理想的数据,那么应该分别返回条。我总共需要条数据,数据库中满足条件的有类数据,他们总数分别是条。上面的代码就实现了这一目的。
话不多说,上代码,不懂原理与目的可以对照注释
/**
* 根据给定的总数值返回每个单元的最值平均数
*
* @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/...
阅读 3500·2021-11-24 10:43
阅读 4446·2021-11-24 10:33
阅读 4224·2021-11-22 09:34
阅读 2317·2021-10-11 10:58
阅读 4019·2021-10-11 10:58
阅读 1099·2021-09-27 13:36
阅读 3834·2019-08-30 15:54
阅读 3198·2019-08-29 18:41