php 根据数据权重,得分或者持有数量等进行均衡分配给定数量分配方法

my_count  代表的是 权重或者 本来持有的数量

看一下自己的想要达到的预期效果

needEvenlyCount  是给定需要分配的数量

先对myData  进行一个按 my_count的一个排序,array_multisort, array_column 等数组方法进行使用,如何使用就不在此多讲了

结果

如果还有比较好的思路,可以告知一下,

附上代码片段

$myData = [
            '1-1' => ['count'=>0, 'my_count'=>1],
            '1-2' => ['count'=>0, 'my_count'=>2],
            '1-3' => ['count'=>0, 'my_count'=>3],
        ];
        // 上面my_count 之和
        $neenSkuCount = 6;

        // 需要分配的数量
        $needEvenlyCount = 9; // 这个值 或者可以是<6的

        // 预期结果
        /*
        $myData = [
            '1-1' => ['count'=>1, 'my_count'=>1],
            '1-2' => ['count'=>3, 'my_count'=>2],
            '1-3' => ['count'=>5, 'my_count'=>3],
        ];
        */

        foreach ($myData as $k => &$v) {
            $v['count'] = (int) ($v['my_count'] / $neenSkuCount    * $needEvenlyCount);
            $neenSkuCount -= $v['my_count'];
            $needEvenlyCount -= $v['count'];
        }
        print_r($myData);exit;
原文地址:https://www.cnblogs.com/fangdada/p/14952883.html