首页 > 解决方案 > 如何仅从给定数字的用户输入中创建数组列表

问题描述

我有一个数组说,

$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

解决方案


    <?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?
    ?>

欢迎您享受编码!


推荐阅读