Как сделать список массива из пользовательского ввода только из заданных чисел - PullRequest
0 голосов
/ 16 июня 2020

У меня есть массив, например

$ box = [1,2,3,6];

Что я хочу? Пользовательский ввод $ n должен быть равен array_sum нового массива, учитывая, что это должно быть выполнено через заданные числа только из массива $ box.

Примечание: число может повторяться. сначала следует взять большее число.

здесь тот же ввод / op

Если пользователь вводит $ 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);

1 Ответ

0 голосов
/ 16 июня 2020
    <?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?
    ?>

Добро пожаловать, наслаждайтесь кодированием!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...