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;