我有一个有趣的小程序,但是我不确定嵌套循环是获得最终结果的最有效方法。
我有以下数据:
Name qty sub
Widget_1 | 100 | 5
Widget_2 | 500 | 10
Widget_3 | 1000 | 15
我是什么打算
取qty
并除以sub
得到term
。因此,我在数组中创建了另一个键:
$widget_1['term] = $widget_1['qty'] / $widget_1['sub'];
现在我有
Array
(
[0] => Array
(
[name] => Widget 1
[qty] => 100
[sub] => 5
[term] => 20
)
[1] => Array
(
[name] => Widget 2
[qty] => 500
[sub] => 10
[term] => 50
)
[2] => Array
(
[name] => Widget 3
[qty] => 1000
[sub] => 15
[term] => 67 //Rounded from 66.6
)
)
我正在遍历,在每个term
的结尾处,将sub
添加到以下widget
中。
因此,例如,在$widget[0]
期末,term
和30
上还有$widget[1]
个qty
的300
到那时,我取$widget[0]
的{{1}}并将其添加到sub
的{{1}},有效地减少了{{ 1}}。
然后$widget[1]
的更新项变为sub
-有效地将term
的 actual 项减少到40。 / p>
然后在widget[1]
的{{1}}(共40个)的末尾–取汇总的$widget[1]
的{{1}}并将其添加到20
。s子
$widget[1]
的期限为40,而15的子项为15。使$widget[1]
的余数为term
,剩下的$widget[1]
为sub
。 15,然后将其添加到$widget[2]
的原始$widget[2]
中,得到30。更新为$widget[2]'s
的 qty
变为13。 {1}}的实际总数为$widget[1]
54,而不是67
这是我的程序-运行命令行,按预期运行功能-我很好奇这是最佳实践,还是更有效地使用sub
/ {{1 }}?也许只有我一个人,但这感觉很“凌乱”。检查$widget[2]
是否大于sub
且小于0等。是否有更好的算法以更简洁,更有效的格式获得相同的结果?
term