php - 如何仅从给定数字的用户输入中创建数组列表
问题描述
我有一个数组说,
$box=[1,2,3,6];
我想要的是?用户输入 $n 应该等于新数组的 array_sum,因为它应该只通过 $box 数组中的给定数字来完成。
注意:数字可以重复。应先取较大的数字。
这是相同的输入/操作
如果用户输入 $n= 9 ,则会创建一个新数组,例如 $parcel=[6,3];
如果用户输入 $n= 18 则创建一个新数组,例如 $parcel=[6,6,6];
如果用户输入 $n= 21 则创建一个新数组,例如 $parcel=[6,6,6,3];
如果用户输入 $n= 3,则会创建一个新数组,例如 $parcel=[3];
如果用户输入 $n= 5,则会创建一个新数组,例如 $parcel=[3,2];
我尝试了什么?
error_reporting();
$n = 7;
$box = [6, 3, 2, 1];
$parcel = [];
if (in_array($n, $box)) {
$j = array_search($n, $box);
array_push($parcel, $box[$j]);
} else {
function myfunction($num)
{
foreach ($GLOBALS['box'] as $bob) {
if (array_sum($GLOBALS['parcel']) !== $GLOBALS['n']) {
return array_push($GLOBALS['parcel'], $bob);
}
}
}
array_map("myfunction", $box);
}
print_r($parcel);
//print_r($new);
解决方案
<?php
function SplitPackages ($items, $packages = array()) {
rsort($packages);
$packs = array();
foreach ($packages as $box) {
if ($items >= $box) {
while ($items >= $box ) {
$items = $items - $box;
$packs[] = $box;
}
}
}
return $packs;
}
$items = 90;
$packages = [6, 3, 2, 1];
$packs = SplitPackages ($items, $packages);
print_r(packs);
// Is this what you need?
?>
欢迎您享受编码!
推荐阅读
- powershell - Sharepoint 2013 powershell 脚本正在运行但没有任何反应
- jquery - 在使用 POSTMAN 时,AJAX POST 请求不起作用
- rust - 函数输出类型随输入变化
- python - 如何在 csv python 中交换行/列
- android - 使用 Delphi 在 Android 服务中显示表单
- javascript - setInterval 作为计数器不适用于赛普拉斯
- jwt - Symfony 5.3:使用 JWT 将用户分配给对象
- javascript - 无限滚动工作但没有做应有的事情
- emscripten - 从 Emscripten 获取 HTML5 设备运动和振动
- python - 在 Python 中计算共现矩阵的任何替代方法?