首先列出你需要的东西:
- 有 4 个不能大于 10 的盒子。
- 还有 4 个不能大于 100 的盒子。
- 所有的箱子都必须按顺序填写。
然后创建一个实现该功能的逻辑:
- 用 10 填充前 4 个框,然后从成员变量中减去它。如果 $member 低于 10,只需将其写入当前框。
- 用 100 填充 otger 4 框并从成员变量中减去它。如果 $member 低于 10,只需将其写入当前框。
如您所见,这两个操作几乎相同。然后你可以使它成为一个操作:
- 填充 8 个框 [如果前 4 个框 = 10,否则 100] 并从 $member 中减去。如果 $member 低于 [如果前 4 个框 = 10,否则 100] 只需将其写入当前框。
这是一些解决方案(可能还有更多):
使用 Closure 的 2 个数组的 Php 5.3+ 解决方案:
<?php
$member = 300;
$small_boxes = array_map(function ($value) use(&$member) {
$return = $member > 10 ? 10 : $member;
$member = $member > 10 ? $member - 10 : 0;
return $return;
}, array_fill(0, 4, 0));
$big_boxes = array_map(function ($value) use(&$member) {
$return = $member > 100 ? 100 : $member;
$member = $member > 100 ? $member - 100 : 0;
return $return;
}, array_fill(0, 4, 0));
var_dump($small_boxes, $big_boxes);
?>
使用 Closure 的 1 个数组的 PHP 5.3+ 解决方案:
<?php
$member = 300;
$count = 1;
$boxes = array_map(function ($value) use(&$member, &$count) {
if ($count <= 4)
{
$return = $member > 10 ? 10 : $member;
$member = $member > 10 ? $member - 10 : 0;
}
else
{
$return = $member > 100 ? 100 : $member;
$member = $member > 100 ? $member - 100 : 0;
}
$count++;
return $return;
}, array_fill(0, 8, 0));
var_dump($boxes);
?>
使用 foreach 的 2 个数组的 PHP 5.3- 解决方案:
<?php
$member = 300;
$small_boxes = $big_boxes = array_fill(0, 4, 0);
foreach ($small_boxes as $key => $value)
{
if ($member > 10)
{
$small_boxes[$key] = 10;
$member -= 10;
}
else
{
$small_boxes[$key] = $member;
$member = 0;
break;
}
}
foreach ($big_boxes as $key => $value)
{
if ($member > 100)
{
$big_boxes[$key] = 100;
$member -= 10;
}
else
{
$big_boxes[$key] = $member;
$member = 0;
break;
}
}
var_dump($small_boxes, $big_boxes);
?>
使用 foreach 的 1 个数组的 PHP 5.3- 解决方案:
<?php
$member = 300;
$box = array_fill(0, 8, 0);
foreach ($box as $key => $value)
{
if ($key < 4)
{
$box[$key] = $member > 10 ? 10 : $member;
$member = $member > 10 ? $member - 10 : 0;
}
else
{
$box[$key] = $member > 100 ? 100 : $member;
$member = $member > 100 ? $member - 100 : 0;
}
}
var_dump($box);
?>
使用你喜欢的任何东西:)
您只需要使用 foreach 打印它/它们。